Cum se instalează forumul NodeBB pe FreeBSD 12
Folosind un sistem diferit? NodeBB este un software de forum bazat pe Node.js. Utilizează prize web pentru interacțiuni instantanee și notificări în timp real. Nodul B
Rularea propriului dvs. server de e-mail poate fi destul de plină de satisfacții. Sunteți responsabil de datele dvs. Vă permite, de asemenea, mai multă flexibilitate cu opțiunile de livrare. Cu toate acestea, există câteva provocări. Riscați să vă deschideți serverul la vulnerabilități, precum și să faceți serverul dvs. un potențial releu pe care îl vor folosi spammerii.
Cu acest lucru, să începem să rulăm propriul nostru server de mail.
Există trei componente software necesare pentru instalare care nu sunt incluse în sistemul de bază FreeBSD:
OpenSMTPd este un agent de transfer de poștă (MTA) și agent de livrare prin poștă (MDA). Aceasta înseamnă că poate comunica cu alte servere de poștă prin SMTP
protocol și, de asemenea, se ocupă cu livrarea de mail către căsuțele poștale ale utilizatorilor. Vom configura OpenSMTPd astfel încât să poată comunica către servere externe (filtrate prin spamd) și să livreze mail către utilizatorii locali, precum și să livreze e-mail local de la utilizator la utilizator.
Dovecot este un MDA care citește căsuțele poștale locale și le servește prin IMAP sau POP3 utilizatorilor. Va folosi căsuțele poștale ale utilizatorilor locali pentru a servi acest conținut.
Spamd este un serviciu de filtrare prin poștă. Putem transmite e-mailul prin spamd și acesta va filtra e-mailul bazat pe o varietate de liste negre, liste albe și o listă de grafică.
Ideea generală pentru acest server de mail necesită câteva căi diferite:
Outside world -> Firewall -> spamd -> OpenSMTPD -> User mail boxes
Outside world -> Firewall (spamd-whitelist) -> OpenSMTPD -> User mailboxes
Outside world -> Firewall (IMAP/POP3) -> Dovecot
Outside world -> Firewall (SMTPD submission)
Pentru acest tutorial, vom folosi versiunea FreeBSD a PF-ului OpenBSD pentru firewall-ul nostru. Puteți utiliza ipfw
, de asemenea , unde configurația este foarte similară.
Notă: implicit, Vultr blochează portul 25, care este utilizat de serverele SMTP de pretutindeni. Dacă doriți să rulați un server de e-mail complet funcțional, va trebui să deschideți portul respectiv.
În primul rând, trebuie să instalăm programele necesare.
Presupunând că executați ca un utilizator cu acces sudo configurat, putem rula următoarele comenzi. Acestea vor varia în funcție de dacă utilizați porturi sau pachete.
Dacă nu aveți nevoie de funcționalități specifice încorporate în aceste utilități, se recomandă instalarea prin pachete. Este mai ușor, necesită mai puțin timp și resurse pentru server și oferă o interfață intuitivă și ușor de utilizat.
sudo pkg install opensmtpd dovecot spamd
Următoarele make
comenzi vă vor oferi o mulțime de opțiuni de compilare, valorile implicite vor funcționa bine. Nu schimbați acestea decât dacă știți exact ce faceți.
sudo portsnap fetch update # or run portsnap fetch extract if using ports for the first time
cd /usr/ports/mail/opensmtpd
make install # Installs openSMTPd
make clean
cd /usr/ports/mail/dovecot
make install # Installs dovecot
make clean
cd /usr/ports/mail/spamd
make install # Installs spamd
make clean
Va trebui să adăugăm următoarele linii la /etc/rc.conf
:
pf_enable="YES"
pf_rules="/usr/local/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
obspamd_enable="YES"
obspamd_flags="-v"
obspamlogd_enable="YES"
dovecot_enable="YES"
Pentru a configura PF, putem crea /usr/local/etc/pf.conf
:
## Set public interface ##
ext_if="vtnet0"
## set and drop IP ranges on the public interface ##
martians = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \
10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \
0.0.0.0/8, 240.0.0.0/4 }"
table <spamd> persist
table <spamd-white> persist
# Whitelisted webmail services
table <webmail> persist file "/usr/local/etc/pf.webmail.ip.conf"
## Skip loop back interface - Skip all PF processing on interface ##
set skip on lo
## Sets the interface for which PF should gather statistics such as bytes in/out and packets passed/blocked ##
set loginterface $ext_if
# Deal with attacks based on incorrect handling of packet fragments
scrub in all
# Pass spamd whitelist
pass quick log on $ext_if inet proto tcp from <spamd-white> to $ext_if port smtp \
-> 127.0.0.1 port 25
# Pass webmail servers
rdr pass quick log on $ext_if inet proto tcp from <gmail> to $ext_if port smtp \
-> 127.0.0.1 port 25
# pass submission messages.
pass quick log on $ext_if inet proto tcp from any to $ext_if port submission modulate state
# Pass unknown mail to spamd
rdr pass log on $ext_if inet proto tcp from {!<spamd-white> <spamd>} to $ext_if port smtp \
-> 127.0.0.1 port 8025
## Blocking spoofed packets
antispoof quick for $ext_if
## Set default policy ##
block return in log all
block out all
# Drop all Non-Routable Addresses
block drop in quick on $ext_if from $martians to any
block drop out quick on $ext_if from any to $martians
pass in inet proto tcp to $ext_if port ssh
# Allow Ping-Pong stuff. Be a good sysadmin
pass inet proto icmp icmp-type echoreq
# Open up imap/pop3 support
pass quick on $ext_if proto tcp from any to any port {imap, imaps, pop3, pop3s} modulate state
# Allow outgoing traffic
pass out on $ext_if proto tcp from any to any modulate state
pass out on $ext_if proto udp from any to any keep state
Aceasta este o configurație PF de lucru. Este relativ simplu, dar există și câteva aspecte care trebuie explicate.
În primul rând, ne definim $ext_if
variabila pentru ca vtnet0
dispozitivul nostru să fie folosit ulterior. De asemenea, definim adrese IP nevalide care ar trebui să fie abandonate pe interfața externă.
De asemenea, definim două tabele spamd
și spamd-white
- aceste două tabele sunt create de spamd în configurația implicită. De asemenea, definim un tabel numit pe webmail
care îl vom folosi pentru a permite unii furnizori importanți de mesagerie web.
Pentru a vizualiza un tabel, puteți utiliza comanda pfctl -t tablename -T show
pentru a enumera elementele dintr-un tabel.
Stabilim câteva reguli PF: omitem procesarea pe interfața locală, activăm statistici pe interfața externă și frecăm pachetele primite.
Următoarea este una dintre părțile mai importante, unde reușim să trimitem traficul nostru către spamd sau OpenSMTPd.
În primul rând, este o regulă de redirecționare (rețineți sintaxa aici, FreeBSD 11 folosește sintaxa PF de stil mai vechi (pre-OpenBSD 4.6), astfel încât sintaxa poate părea ciudată. Dacă primim ceva pe smtp de la o gazdă listată în spamd
tabel sau nu este listată în spamd-white
tabel, vom redirecționa conexiunea prin intermediul la daemon spamd, care se ocupă cu aceste conexiuni. urmatoarele trei reguli sunt reguli passthrough , astfel încât să putem primi de fapt , e - mail. vom trece prin mesaje de la IP - urile enumerate în spamd-white
și webmail
tabelele direct până la OpenSMTPd. De asemenea, acceptăm mesaje pe portul de trimitere ( 587
).
Apoi, există câteva reguli de menaj pentru a stabili politica noastră implicită și pentru a accepta mesajele SSH și ICMP.
Vom trece apoi IMAP și POP3 pe interfața noastră externă pentru a accesa Dovecot.
În sfârșit, permitem tot traficul de ieșire. Dacă doriți să adăugați securitate suplimentară, puteți limita porturile pe care le treceți, dar pentru un server cu o singură utilizare nu este o problemă să treceți totul.
PF Start:
sudo service pf start
Acum că avem configurarea firewallului, putem trece la configurația serverului nostru de poștă.
OpenSMTPd are o sintaxă de configurare foarte simplă și ușor de citit. O întreagă configurație de lucru se poate încadra în 14 linii, după cum puteți vedea mai jos:
#This is the smtpd server system-wide configuration file.
# See smtpd.conf(5) for more information.
ext_if=vtnet0
# If you edit the file, you have to run "smtpctl update table aliases"
table aliases file:/etc/mail/aliases
table domains file:/etc/mail/domains
# Keys
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
# If you want to listen on multiple subdomains (e.g. mail.davidlenfesty) you have to add more lines
# of keys, and more lines of listeners
# Listen for local SMTP connections
listen on localhost hostname mail.example.com
# listen for filtered spamd connections
listen on lo0 port 10026
# Listen for submissions
listen on $ext_if port 587 tls-require auth pki mail.example.com tag SUBMITTED
# Accept mail from external sources.
accept from any for domain <domains> alias <aliases> deliver to maildir "~/mail"
accept for local alias <aliases> deliver to maildir "~/mail"
accept from local for any relay tls
accept tagged SUBMITTED for any relay tls
În primul rând, ne definim din nou interfața externă, precum și câteva tabele, aliasuri și domenii. Apoi trecem la cheia SSL și certificatul pentru domeniile pe care dorim să le gestionăm prin poștă.
În secțiunea următoare, definim interfețele și porturile pe care dorim să le ascultăm. În primul rând, ascultăm localhost pentru mail.example.com
domeniul nostru , pentru orice conexiuni locale. Apoi ascultăm mesajele noastre filtrate de spam și trimitem mesajele pe interfața externă. În cele din urmă, ascultăm trimiterile, acestea se petrec în port 587
și le solicităm autentificarea, din motive de securitate.
În cele din urmă sunt accept
setările noastre . Acceptăm orice mesaj pentru oricare dintre domeniile noastre definite în domains
tabelul nostru , pentru aliasuri din aliases
tabelul nostru , pentru a le livra în maildir
formatul lor directorul de acasă . Apoi acceptăm toate conexiunile locale pentru căsuțele poștale locale și transmitem mesajele noastre, astfel încât să putem trimite e-mailuri. În cele din urmă, acceptăm mesajele transmise la releu. Dacă nu am avea nevoie de autentificare pentru portul nostru de trimiteri, acesta ar fi un mare risc pentru securitate. Acest lucru ar permite oricui să folosească serverul nostru ca un releu de spam.
FreeBSD este livrat cu un fișier alias implicit /etc/mail/aliases
în următorul format:
vuser1: user1
vuser2: user1
vuser3: user1
vuser4: user2
Aceasta definește diferitele căsuțe de poștă și unde dorim să retrimitem mesajele trimise către aceste căsuțe poștale definite. Putem să definim utilizatorii noștri ca utilizatori ai sistemului local sau căsuțe poștale externe la care să fie transmise. Fișierul FreeBSD implicit este destul de descriptiv, astfel încât să puteți face referire la acesta pentru referință.
FreeBSD nu furnizează un fișier de domenii implicit, dar acest lucru este incredibil de simplu:
# Domains
example.com
mail.example.com
smtp.example.com
Acesta este doar un fișier text simplu cu fiecare domeniu pe care doriți să îl ascultați pe o nouă linie. Puteți face un comentariu folosind #
simbolul. Acest fișier există pur și simplu astfel încât să puteți utiliza mai puține linii de configurare.
Există două modalități de a vă asigura securitatea comunicațiilor cu serverul dvs. de poștă, certificate semnate și semnate de la sine. Este cu siguranță posibil să vă autofirmați certificatele, cu toate acestea servicii precum Let's Encrypt oferă semnarea gratuită și incredibil de ușor de utilizat.
Mai întâi trebuie să instalăm programul certbot.
sudo pkg install py-certbot
Alternativ, poate fi instalat cu porturi:
cd /usr/ports/security/py-certbot
make install
make clean
Apoi, pentru a obține certificatul, trebuie să vă asigurați că ați deschis portul 80
pe interfața externă. Adăugați următoarele linii undeva în regulile de filtrare în /usr/local/etc/pf.conf
:
pass quick on $ext_if from any to any port http
Apoi executați pfctl -f /usr/local/etc/pf.conf
pentru a reîncărca setul de reguli.
Apoi puteți rula comanda pentru orice domenii pentru care doriți să obțineți un certificat pentru:
certbot certonly --standalone -d mail.example.com
Este recomandat să configurați o intrare crontab care să fie executată certbot renew
o dată la 6 luni pentru a vă asigura că certificatele dvs. nu expiră.
Apoi, pentru fiecare domeniu relevant, puteți modifica liniile pentru a puncta fișierul cheie corect:
pki mail.example.com key "/usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem"
pki mail.example.com certificate "/usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem"
Editați titlurile:
sudo chmod 700 /usr/local/etc/letsencrypt/archive/mail.example.com/*
Notă: Va trebui să faceți acest lucru pentru fiecare fișier cheie original sau altceva OpenSMTPd nu le va deschide.
Acum putem începe serviciul:
sudo service smtpd start
Aici folosim demonul spamd al OpenBSD pentru a reduce cantitatea de spam pe care o primim de pe internet. În esență, aceasta filtrează mesajele de la IP-uri care sunt cunoscute ca fiind proaste din diverse surse de spam, precum și (implicit) conexiunile de intrare „greylist”. Spamd încearcă, de asemenea, să irosească calendarul spammerului prin „bâlbâirea” conexiunilor listate cu lista neagră și greylisted, ceea ce înseamnă că răspândește răspunsul pe mai multe secunde, ceea ce obligă clientul să rămână deschis mai mult decât de obicei.
Lista greșită a unei conexiuni se face atunci când se conectează o nouă adresă IP care nu se află pe nicio listă neagră sau în lista albă. Odată ce noua adresă se conectează, spamd pică mesajul cu un mesaj de eroare inofensiv, apoi îl adaugă la o listă temporară. Deoarece spamerii sunt plătiți pentru mesajele livrate, nu vor reîncepe o eroare, în timp ce un serviciu legitim va reîncepe relativ curând.
Va trebui să rulați următoarele pentru a monta fdescfs
:
mount -t fdescfs null /dev/fd
Apoi, va trebui să adăugați această linie la /etc/fstab
:
fdescfs /dev/fd fdescfs rw 0 0
Fișierul de configurare implicit (găsit în /usr/local/etc/spamd/spamd.conf.sample
) va funcționa bine. Puteți edita pentru a adăuga noi surse sau pentru a modifica sursele pe care le utilizați:
sudo cp /usr/local/etc/spamd/spamd.conf.sample /usr/local/etc/spamd/spamd.conf
Putem începe serviciul cu următoarele:
sudo service obspamd start
În acest moment este configurat spamd.
O problemă a abordării de greșire este că serviciile de poștă de dimensiuni mari vor trimite adesea mesaje prin unul dintre mai multe bobine diferite și nu aveți garanția de a primi același server care trimite mesajul de fiecare dată. O soluție în acest sens este listarea în alb a intervalelor IP utilizate de diverse servicii de poștă web. Pentru aceasta se folosește tabelul de e-mail în configurația PF. Această strategie poate fi respinsă dacă includeți o adresă IP pe care o folosește un spammer, dar atâta timp cât sunteți atenți la ce intervale ați introdus în tabel, veți fi bine.
Pentru a adăuga un interval de e-mail la tabelul de e-mail, puteți rula următoarea comandă:
pfctl -t webmail -T add 192.0.2.0/24
Dacă doriți ca utilizatorii să acceseze e-mailul lor fără să se conecteze prin SSH, veți avea nevoie de un MDA care acceptă IMAP și / sau POP3. Un program foarte popular este Dovecot, cu o configurație destul de simplă și caracteristici puternice.
Putem copia peste configurația implicită:
cd /usr/local/etc/dovecot
cp -R example-config/* ./
Configurația este formată din câteva fișiere diferite. Pentru a vedea diferențele dintre configurația dvs. implicită și porumbeii impliciți, executați comanda de mai jos:
sudo doveconf -n
Următoarea este o configurație simplă, de lucru:
# 2.3.2.1 (0719df592): /usr/local/etc/dovecot/dovecot.conf
# OS: FreeBSD 11.2-RELEASE amd64
# Hostname: mail.example.com
hostname = mail.example.com
mail_location = maildir:~/mail
namespace inbox {
inbox = yes
location =
mailbox Archive {
auto = create
special_use = \Archive
}
mailbox Archives {
auto = create
special_use = \Archive
}
mailbox Drafts {
auto = subscribe
special_use = \Drafts
}
mailbox Junk {
auto = create
autoexpunge = 60 days
special_use = \Junk
}
mailbox Sent {
auto = subscribe
special_use = \Sent
}
mailbox "Sent Mail" {
auto = no
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
mailbox Spam {
auto = no
special_use = \Junk
}
mailbox Trash {
auto = no
autoexpunge = 90 days
special_use = \Trash
}
prefix =
separator = /
}
passdb {
args = imap
driver = pam
}
ssl = required
ssl_cert = </usr/local/etc/letsencrypt/live/mail.example.com/fullchain.pem
ssl_dh = </usr/local/etc/dovecot/dh.pem
ssl_key = </usr/local/etc/letsencrypt/live/mail.example.com/privkey.pem
userdb {
driver = passwd
}
Majoritatea fișierelor de configurare vor fi conectate conf.d
Cele mai importante sunt 10-auth.conf
, 10-mail.conf
și 10-ssl.conf
.
Puteți configura diferitele căsuțe poștale pe care le utilizați 15-mailboxes.conf
. Ce vedeți mai sus este o configurație bună pentru multe sisteme, dar kilometrajul dvs. poate varia. Este recomandat să te joci cu asta cu cât mai mulți clienți diferiți.
Majoritatea setărilor implicite vor fi corecte. Dacă doriți să utilizați utilizatorii sistemului pentru a se autentifica, va trebui să editați 10-auth.conf
.
Decomandați următoarea linie:
! include auth-system.conf.ext
Trebuie să generăm parametrii Diffie-Hellman:
sudo nohup openssl dhparam -out /usr/local/etc/dovecot/dh.pem
Notă: Acest lucru va dura mult timp pentru a rula. Mult mai mult decât te-ai putea aștepta.
Acum putem începe Dovecot:
sudo service dovecot start
În acest moment, avem un server de mail funcțional, sigur și relativ fără spam.
Mai multe lucruri de examinat de aici folosesc SpamAssassin pentru a scăpa de euristic de spam, precum și pentru a găsi mai multe liste negre spamd puse la dispoziție de surse de încredere.
Folosind un sistem diferit? NodeBB este un software de forum bazat pe Node.js. Utilizează prize web pentru interacțiuni instantanee și notificări în timp real. Nodul B
Dacă executați propriul dvs. rezolvator sau doriți să utilizați unul de la un furnizor terț, puteți constata că fișierul dvs. /etc/resolv.conf este suprascris de DHCP
Folosind un sistem diferit? Automad este un sistem open source de conținut bazat pe fișiere (CMS) și motor de șabloane, scris în PHP. Codul sursă Automad i
Folosind un sistem diferit? X-Cart este o platformă eCommerce open-source extrem de flexibilă, cu tone de funcții și integrări. Codul sursă X-Cart este gazdă
Introducere WordPress este sistemul dominant de gestionare a conținutului pe internet. Acesta alimentează totul, de la bloguri la site-uri web complexe, cu conținut dinamic
Folosind un sistem diferit? Anchor CMS este un motor de blog de sistem de gestionare a conținutului (CMS) super-simplu și extrem de ușor, gratuit și deschis
Murmur este software-ul de server oficial pentru protocolul de comunicare vocală Mumble. Această implementare oficială este stabilă și eficientă. Acest ghid va fi
Folosind un sistem diferit? WonderCMS este un CMS cu fișier plat, de tip open source, rapid și mic, scris în PHP. Codul sursă WonderCMS este găzduit pe Github. Acest ghid va fi
Folosind un sistem diferit? Pagekit 1.0 CMS este un sistem frumos de gestionare a conținutului (CMS), modular, extensibil și ușor, gratuit și deschis, cu
Folosind un sistem diferit? TLS 1.3 este o versiune a protocolului Transport Layer Security (TLS) care a fost publicat în 2018 ca standard propus în RFC 8446
Acest tutorial vă va arăta cum să instalați iRedMail de grup în o nouă instalare a FreeBSD 10. Ar trebui să folosiți un server cu cel puțin o gigabyte o
Folosind un sistem diferit? Dolibarr este un plan de resurse pentru întreprinderi open source (ERP) și managementul relațiilor cu clienții (CRM) pentru companii. Dolibarr
Folosind un sistem diferit? TaskWarrior este un instrument de gestionare a timpului open source care este o îmbunătățire a aplicației Todo.txt și a clonelor sale. Datorită th
Folosind un sistem diferit? DokuWiki este un program wiki open source scris în PHP care nu necesită o bază de date. Stochează date în fișiere text. DokuWik
Ghost este cel mai recent și cel mai mare upstart pentru a rivaliza cu WordPress. Dezvoltarea tematică este rapidă și ușor de învățat, deoarece dezvoltatorii Ghost au decis să utilizeze ambele aplicații
Introducere Cu cât vă mențineți mai aproape instalarea OpenBSD la valoarea implicită și fără tot atâtea pachete adăugate, cu atât va fi mai sigur. În timp ce mai comun
La actualizarea unei instanțe VPS pe Vultr, un sistem de fișiere Linux este redimensionat automat. Când executați FreeBSD cu sistemul avansat de fișiere ZFS, unele manuale sunt uzate
Acest tutorial vă va arăta cum să obțineți un server de mail simplu pe FreeBSD 10, cu Postfix ca MTA, Dovecot ca MDA și Sieve pentru sortarea poștelor - peste un
Folosind un sistem diferit? ESpeak poate genera fișiere audio text-to-speech (TTS). Acestea pot fi utile din mai multe motive, cum ar fi crearea propriului dvs. Torino
Folosind un sistem diferit? MODX Revolution este un sistem de administrare a conținutului (CMS) rapid, flexibil, scalabil, open source, de calitate a întreprinderii, scris în PHP. Este
O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1
Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.
Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.
Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.
Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.
CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?
Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.
Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!
Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.
Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe