Uvod
Sledi „kratko“ uputstvo za Mail Server podešavanje. Oslonićemo se na Postfix, Dovecot, MySQL i anti-spam uključujući neke detalje vezane za OpenDKIM/SPF/ReversePTR.
Instalacija paketa potrebnih za Mail Server podešavanje
Pre svega moramo da instaliramo potrebne pakete kao prvi korak za mail server podešavanje.
apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql
U Postfix konfiguraciji izaberite Internet Site.
Kreiranje MySQL baze podataka, virtuelnih domena, korisnika i pseudonima
Kreiraćemo MySQL bazu podataka, koja u sebi sadrži 3 različite tabele:
- Domains
- Users
- Aliases
Ulogujte se u MySQL i kreirajte servermail bazu podataka:
mysql -u root -p CREATE DATABASE servermail;
Prvo ćemo napraviti novog korisnika, konkretno za mail autentifikaciju:
mysql > GRANT SELECT ON servermail.* TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'mailpassword'; mysql > FLUSH PRIVILEGES;
Upotrebite tu bazu podataka kako biste kreirali tabele i podatke:
mysql> USE servermail;
Napravite tabelu „domains“ za domene prepoznate kao autorizovane domene:
CREATE TABLE `virtual_domains` ( `id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Zatim tabelu korisnika, za email adrese i lozinke, povezujući svakog korisnika sa domenom:
CREATE TABLE `virtual_users` ( `id` INT NOT NULL AUTO_INCREMENT, `domain_id` INT NOT NULL, `password` VARCHAR(106) NOT NULL, `email` VARCHAR(120) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`), FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
I tabelu pseudonima, za određivanje email-ova koji će biti prosleđeni drugom email-u.
CREATE TABLE `virtual_aliases` ( `id` INT NOT NULL AUTO_INCREMENT, `domain_id` INT NOT NULL, `source` varchar(100) NOT NULL, `destination` varchar(100) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Kada je struktura postavljena, prelazimo na data segment.
Virtuelni domeni
Ubacivanje domena:
INSERT INTO `servermail`.`virtual_domains` (`id` ,`name`) VALUES ('1', 'cyberpunk.rs'), ('2', 'mail.cyberpunk.rs');
Virtuelne email adrese
Kreiranje email adresa i lozinki za svaki domen:
INSERT INTO `servermail`.`virtual_users` (`id`, `domain_id`, `password` , `email`) VALUES ('1', '1', ENCRYPT('firstpassword', CONCAT('$6
Virtual Pseudonimi
Napravićemo pseudonimo koji ćemo proslediti nekoj drugoj email adresi (destinaciji):
INSERT INTO `servermail`.`virtual_aliases` (`id`, `domain_id`, `source`, `destination`) VALUES ('1', '1', 'alias@cyberpunk.rs', 'email1@cyberpunk.rs');
EncFS (opsiono)
Kao što možete videti na slici iznad (upozorenje prilikom instalacije), EncFS nije baš idealan. Poseduje poznate ranjivosti, pa bi možda neke druge alternative, kao što je CryFS, mogle biti bolja ideja. Za ovaj primer mi ćemo se držati EncFS-a.
$ apt-get install encfs mkdir /encrypted-mail /decrypted-mail chgrp mail /decrypted-mail/ chmod -R g+rw /decrypted-mail/ gpasswd -a mail fuse chgrp fuse /dev/fuse; chmod g+rw /dev/fuse root@li212-205:~# encfs /encrypted-mail /decrypted-mail -o --public Creating new encrypted volume. Please choose from one of the following options: enter "x" for expert configuration mode, enter "p" for pre-configured paranoia mode, anything else, or an empty line will select standard mode. ?> p Paranoia configuration selected. Configuration finished. The filesystem to be created has the following properties: Filesystem cipher: "ssl/aes", version 3:0:2 Filename encoding: "nameio/block", version 3:0:1 Key Size: 256 bits Block Size: 1024 bytes, including 8 byte MAC header Each file contains 8 byte header with unique IV data. Filenames encoded using IV chaining mode. File data IV is chained to filename IV. File holes passed through to ciphertext. -------------------------- WARNING -------------------------- The external initialization-vector chaining option has been enabled. This option disables the use of hard links on the filesystem. Without hard links, some programs may not work. The programs 'mutt' and 'procmail' are known to fail. For more information, please see the encfs mailing list. If you would like to choose another configuration setting, please press CTRL-C now to abort and start over. Now you will need to enter a password for your filesystem. You will need to remember this password, as there is absolutely no recovery mechanism. However, the password can be changed later using encfsctl. New Encfs Password: Verify Encfs Password:
Tako jednostavno. /decrypted-mail
je sada običan direktorijum. /encrypted-mail
sadrži iste podatke, samo što su enkriptovani.
Konfiguracija Postifix-a
Šta je Postfix? To je Wietse Venema’s mail server („MTA“ u email žargonu), koji je svoju „karijeru“ započeo u IBM istraživanju kao alternativa za široko upotrebljavan Sendamail program. U suštini on radi preko SMTP-a, i prispele mail-ove dostavlja Dovecot-u. Kao sledeći korak u mail server podešavanju, konfigurisaćemo Postfix da pravilno upravlja sa SMTP konekcijama i porukama sa svakog uvedenog korisnika u MySQL bazu podataka.
Za svaki slučaj, napravite rezervne kopije (beckups) konfiguracionih fajlova koje ćemo u nastavku izmeniti. Otvorite main.cf
fajl kako biste ga modifikovali:
nano /etc/postfix/main.cf
Prvo ćemo zakomentarisati TLS parametre i dodati druge. Možete upotrebiti SSL sertifikate i preložene putanje:
# TLS parameters #smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem #smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key #smtpd_use_tls=yes #smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache #smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_tls_cert_file=/etc/ssl/certs/dovecot.pem smtpd_tls_key_file=/etc/ssl/private/dovecot.pem smtpd_use_tls=yes smtpd_tls_auth_only = yes
ili jednostavno modifikujte fajl prema vašoj ličnoj konfiguraciju, npr. koristeći Let’s Encrypt:
# TLS parameters smtpd_tls_cert_file=/etc/letsencrypt/live/<DOMAIN.com>/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/<DOMAIN.com>/privkey.pem smtpd_tls_CAfile=/etc/letsencrypt/live/<DOMAIN.com>/chain.pem
Nakon toga dodajemo slede’e parametre ispod TLS podešavanja, koje smo izmenili u prethodnom koraku:
smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
Takođe, neophodno je da zakomentarišemo mydestination
podrazumevana podešavanja i da ih zamenimo sa localhost
. Ova promena će vašem VPS-u dozvoliti da koristi virutelne domene u okviru MySQL tabele.
#mydestination = cyberpunk.rs, mail.cyberpunk.rs, localhost.cyberpunk.rs, localhost mydestination = localhost
Proverite da li je myhostname
parametar podešen u skladu sa vašim FQDN.
myhostname = mail.cyberpunk.rs
Dodajte sledeću liniju koda, vezanu za prijem lokalne pošte, svim virtuelnim domenima navedenim unutar MySQL tabele.
virtual_transport = lmtp:unix:private/dovecot-lmtp
Na kraju, dodajemo sva 3 parametra kako bismo Postfix-u rekli da konfiguriše virtuelne domene, korisnike i pseudonime.
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Kreiraćemo tri konačna fajla koja ćemo dodati main.cf
fajlu kako bismo Postfix-u rekli kako da se poveže sa MySQL-om.
Najpre ćemo kreirati mysql-virtual-mailbox-domains.cf
fajl. Veoma je važno da u zavisnosti od vaše lične konfiguracije, promenite date vrednosti.
nano /etc/postfix/mysql-virtual-mailbox-domains.cf user = usermail password = mailpassword hosts = 127.0.0.1 dbname = servermail query = SELECT 1 FROM virtual_domains WHERE name='%s'
Zatim restartujemo Postfix.
service postfix restart
Kako bismo osigurali da će Postfix pronađe vaš domen, neophodno je da to i testiramo sledećom komandom. Ako je uspešno, trebalo bi da vrati 1:
postmap -q cyberpunk.rs mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
Onda kreiramo mysql-virtual-mailbox-maps.cf
fajl.
nano /etc/postfix/mysql-virtual-mailbox-maps.cf user = usermail password = mailpassword hosts = 127.0.0.1 dbname = servermail query = SELECT 1 FROM virtual_users WHERE email='%s'
Zatim ponovo restartujemo Postfix:
service postfix restart
U ovom trenutku ćemo osigurati da Postfix pronađe svoju prvu email adresu sledećom komandom. Ukoliko je uspešno, vratiće 1:
postmap -q email1@cyberpunk.rs mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
I na kraju kreiramo poslednji fajl kako bismo konfigurisali konekciju između Postfix-a i MySQL-a.
nano /etc/postfix/mysql-virtual-alias-maps.cf user = usermail password = mailpassword hosts = 127.0.0.1 dbname = servermail query = SELECT destination FROM virtual_aliases WHERE source='%s'
Restartujemo Postix ponovo:
service postfix restart
Proveravamo da li Postfix može da pronađe vaše pseudonime. Unesite sledeću komandu koja bi trebalo da vrati mail koji je prosleđen vašem pseudonimu:
postmap -q alias@cyberpunk.rs mysql:/etc/postfix/mysql-virtual-alias-maps.cf
Ukoliko ćelite da omogućite da se port 587
osigurano povezuje sa vašim email klijentima, neophodno je da modifikujete /etc/postfix/master.cf
fajl:
nano /etc/postfix/master.cf
Potrebno je da otkomentarišemo sledeće linije i dodamo druge parametre:
submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
U nekim slučajevima je neophodno da se restartuje Postfix kako bismo bili sigurni da je port 587
otvoren:
service postfix restart
Napomena: Možete upotrebiti „netstat -tulpn
“ cmdkako biste proverili da li vaš sistem sluša određene portove. Takođe, možete i iskoristiti ovaj alat kako biste skenirali portove vašeg domena i proverili da li su portovi 25
i 587
otvoreni.
Konfiguracija Dovecota-a
Dovecot („LDA“-Local Delivery Agent, u email žargonu) je open-source IMAP i POP3 email server Linux/UNIX sisteme, napisan sa bezbednošću na umu. U suštini, pokreće IMAP.
Napravite kopije sledećih 7 fajlova koji će biti modifikovani, kako biste bili u mogućnosti da ih vratite na podrazumevano, ukoliko to bude bilo potrebno:
cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig
Izmenite konfiguracioni fajl iz Dovecota-a:
nano /etc/dovecot/dovecot.conf
Potvrdite da je sledeća opcija otkomentarisana:
!include conf.d/*.conf
Omogućite protokole ispod linije !include_try /usr/share/dovecot/protocols.d/*.protocol
(dodajte i POP3 ako želite):
!include_try /usr/share/dovecot/protocols.d/*.protocol protocols = imap lmtp
Zatim ćemo izmeniti konfiguracioni fajl mail-a:
nano /etc/dovecot/conf.d/10-mail.conf
Pronađite liniju mail_location
, otkomentarišite je i unesite sledeći parametar:
mail_location = maildir:/var/mail/vhosts/%d/%n
Takođe, pronađite liniju mail_privileged_group
, otkomentarišite i nju je i dodataj sledeći parametar:
mail_privileged_group = mail
Budite sigurni da su dozvole 775 ovakve:
>drwxrwsr-x 3 root vmail 4096 Jan 24 21:23 /var/mail
Kreiraćemo folder za svaki domen koji smo registrovali u okviru MySQL tabele:
mkdir -p /var/mail/vhosts/cyberpunk.rs
Kreirajte vmail korisnika i grupu sa sa id vrednošću 5000:
groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /var/mail
Moramo da promenimo vlasnika foldera /var/mail
na vmail korisnika:
chown -R vmail:vmail /var/mail
Zatim je neophodno da izmenimo /etc/dovecot/conf.d/10-auth.conf
fajl:
nano /etc/dovecot/conf.d/10-auth.conf
Otkomentarišite i/ili podesite sledeće linije:
disable_plaintext_auth = yes auth_mechanisms = plain login #!include auth-system.conf.ext
Kreirajte/etc/dovecot/dovecot-sql.conf.ext
fajl sa vašim informacijama za autentifikaciju:
nano /etc/dovecot/conf.d/auth-sql.conf.ext
Unesite sledeći kod:
passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n }
Zatim modifikujte /etc/dovecot/dovecot-sql.conf.ext
fajl sa vašim MySQL informacijama:
nano /etc/dovecot/dovecot-sql.conf.ext
Otkomentarišite parametar drajvera i postavite MySQL kao parametar:
driver = mysql connect = host=127.0.0.1 dbname=servermail user=usermail password=mailpassword default_pass_scheme = SHA512-CRYPT password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
Promenite vlasnika i grupu dovecot foldera na vmail korisnika:
chown -R vmail:dovecot /etc/dovecot chmod -R o-rwx /etc/dovecot
Otvorite i modifikujte /etc/dovecot/conf.d/10-master.conf
fajl(budite oprezni zato što će različiti parametri biti promenjeni).
nano /etc/dovecot/conf.d/10-master.conf ##Uncomment inet_listener_imap and modify to port 0 service imap-login { inet_listener imap { port = 0 } #Create LMTP socket and this configurations service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } #inet_listener lmtp { # Avoid making LMTP visible for the entire internet #address = #port = #} }
Promenite unix_listener
parameter u service_auth
na sledeći način:
service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } unix_listener auth-userdb { mode = 0600 user = vmail #group = } #unix_listener /var/spool/postfix/private/auth { # mode = 0666 #} user = dovecot }
Takođe i service auth-worker
na sledeći način:
service auth-worker { # Auth worker process is run as root by default, so that it can access # /etc/shadow. If this isn't necessary, the user should be changed to # $default_internal_user. user = vmail }
Na kraju modifikujemo SSL konfiguracioni fajl iz Dovecot-a (preskočite ovaj korak ukoliko planirate da iskoristite podrazumevanu konfiguraciju):
# nano /etc/dovecot/conf.d/10-ssl.conf ssl = required ssl_cert = </etc/ssl/certs/dovecot.pem ssl_key = </etc/ssl/private/dovecot.pem
ili, kao što smo ranije spomenuli, postavite Let’s encrypt ključeve:
ssl_cert = </etc/letsencrypt/live/<DOMAIN.com>/fullchain.pem ssl_key = </etc/letsencrypt/live/<DOMAIN.com>/privkey.pem
Generisanje SSL sertifikata:
openssl req -new -x509 -days 1000 -nodes -out "/etc/ssl/certs/dovecot.pem" -keyout "/etc/ssl/private/dovecot.pem"
Osim toga, trebalo bi da proverite da li je port 993
otvoren i da li radi (u slučaju da ste omogućili POP3, takođe bi trebalo da proverite i port 995
).
telnet cyberpunk.rs 993
Čestitamo. Uspešno ste konfigurisali vaš mail server i možete ga testirati vašim nalogom koristeći email klijenta:
- Username: email1@cyberpunk.rs - Password: email1's password - IMAP: cyberpunk.rs - SMTP: cyberpunk.rs
Napomena: za siguran IMAP upotrebite port 993
, a za SMTP portove 587
i 25
.
Izbegavanje SPAM filtera
Podesićemo SPF, OpenDKIM, i (možda) PTR.
OpenDKIM
OpenDKIM je open-source implementacija DKIM (Domain Keys Identified Mail) sistema za autentifikaciju pošiljaoca koju je predložila E-mail Signing Technology grupa (ESTG), trenutno standardizovana od strane IETF (RFC6376). U osnovi, DKIM podrazumeva digitalno potpisivanje svih poruka na serveru kako bi se verifikovalo da je poruka zapravo poslata sa određenog domena i da nije spam ili „phishing“ (i da nije modifikovana).
apt-get install opendkim opendkim-tools mkdir -pv /etc/opendkim/ chown -Rv opendkim:opendkim /etc/opendkim chmod go-rwx /etc/opendkim/* cd /etc/opendkim/ opendkim-genkey -r -h rsa-sha256 -d mail.cyberpunk.rs -s mail mv -v mail.private mail
cat mail.txt mail._domainkey IN TXT ( "v=DKIM1; h=rsa-sha256; k=rsa; s=email; " "p=MIGfMA0GCSqGSIb3DQEBASQWASD4GNADCBiQKBgQDB1MasdWA2L7RSirVQQ73tYl3wE6u86wpy1xERZ3pGSDFWEh4snU/0WEFjUT/D+z4AGFDSGParL/DDSFWEFWEFWEF/WEFWEFWEFWEF" ) ; ----- DKIM key mail for mail.cyberpunk.rs
Nakon što ste to instalirali na vašem DNS server, konfigurišite Postfix i da upotrebi taj ključ:
nano /etc/opendkim/KeyTable mail.cyberpunk.rs mail.cyberpunk.rs:mail:/etc/opendkim/mail
nano /etc/opendkim/SigningTable *@mail.cyberpunk.rs mail.cyberpunk.rs
nano /etc/opendkim/TrustedHosts 127.0.0.1
nano /etc/opendkim.conf ## ## opendkim.conf -- configuration file for OpenDKIM filter ## Canonicalization relaxed/relaxed ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable LogWhy Yes MinimumKeyBits 1024 Mode sv PidFile /var/run/opendkim/opendkim.pid SigningTable refile:/etc/opendkim/SigningTable Socket inet:8891@localhost Syslog Yes SyslogSuccess Yes TemporaryDirectory /var/tmp UMask 022 UserID opendkim:opendkim nano /etc/postfix/main.cf #add to the bottom
smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept
Edit default opendkim:
nano /etc/default/opendkim
SOCKET="inet:8891@localhost"
Restart everything:
service opendkim restart service postfix restart
SPF
Sender Policy Framework (SPF) je jedan od načina borbe protiv spama, odnosno neželjene pošte. SPF zapis je TXT zapis koji je deo DNS zone fajla domena i određuje spisak ovlašćenih domaćina (hostnames)/IP adresa sa kojih, za određeni domen, pošta uoopšte može poticati. Sve što treba da uradite je da izmenite zone fajl:
cyberpunk 300 TXT "v=spf1 mx -all"
Ovde smo zapravo rekli: „mail server za cyberpunk može da šalje poštu za cyberpunk“.
Takođe, možete debagovati DKIM (iSPF) podešavanja sa npr. ovom altkom.
Reverse PTR
Reverse DNS je jedan od osnovnih zahteva za pokretanje nekih Internet protokola. Takođe se veoma često koristi i kao spam filter kako bi se utvrdilo da li se IP adresa sa koje pristiže poruka podudara sa autentifikovanim domenom. Ukoliko dođe do nepodudaranja, poruka će biti blokirana.
Anti-Spam
Spam može da bude dosadan i opasan, tako da je uvek dobra ideja da se podese neki anti-spam servisi. Mi čemo uključiti 2: dspam and SpamAssasin.
DSpam
apt-get install dspam dovecot-antispam postfix-pcre dovecot-sieve
dodajte sledeće linije u /etc/dspam/dspam.conf
fajl:
Home /decrypted-mail/dspam TrustedDeliveryAgent "/usr/sbin/sendmail" UntrustedDeliveryAgent "/usr/lib/dovecot/deliver -d %u" Tokenizer osb IgnoreHeader X-Spam-Status IgnoreHeader X-Spam-Scanned IgnoreHeader X-Virus-Scanner-Result IgnoreHeader X-Virus-Scanned IgnoreHeader X-DKIM IgnoreHeader DKIM-Signature IgnoreHeader DomainKey-Signature IgnoreHeader X-Google-Dkim-Signature ParseToHeaders on ChangeModeOnParse off ChangeUserOnParse full ServerPID /var/run/dspam/dspam.pid ServerDomainSocketPath "/var/run/dspam/dspam.sock" ClientHost /var/run/dspam/dspam.sock
Kreirajte direktorijum:
mkdir /decrypted-mail/dspam chown dspam:dspam /decrypted-mail/dspam
Ono što mogu da kažem je da su preference u/etc/dpsam/dspam.conf
u potpunosti izignorisane. Ukoliko želite da ih izmenite, pravo /etc/dspam/default.prefs
. Potupuno logićno, zar ne? U svakom slučaju, unesite sledeće vrednosti:
spamAction=deliver # { quarantine | tag | deliver } -> default:quarantine signatureLocation=headers # { message | headers } -> default:message showFactors=on
Izmenite/etc/postfix/master.cf
:
dspam unix - n n - 10 pipe flags=Ru user=dspam argv=/usr/bin/dspam --deliver=innocent,spam --user $recipient -i -f $sender -- $recipient dovecot unix - n n - - pipe flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
i
nano /etc/postfix/dspam_filter_access /./ FILTER dspam:unix:/run/dspam/dspam.sock
Na kraju /etc/postfix/main.cf
unesite:
# new settings for dspam dspam_destination_recipient_limit = 1 #only scan one mail at a time smtpd_client_restrictions = permit_sasl_authenticated #localhost doesn't get scanned check_client_access pcre:/etc/postfix/dspam_filter_access #run dspam on everything else
Integrišite dspam sa imap-om:
nano /etc/dovecot/conf.d/20-imap.conf mail_plugins = $mail_plugins antispam
Integrišite dspam sa lmtp-om:
protocol lmtp { # Space separated list of plugins to load (default is global mail_plugins). mail_plugins = $mail_plugins sieve }
Kažite sieve-u da neželjenu poštu pomeri u Spam folder. Izmenite/decrypted-mail/mail.cyberpunk.rs/drew/.dovecot.sieve
(npr. za vaše korisničko ime i domen):
require ["regex", "fileinto", "imap4flags"]; # Catch mail tagged as Spam, except Spam retrained and delivered to the mailbox if allof (header :regex "X-DSPAM-Result" "^(Spam|Virus|Bl[ao]cklisted)$", not header :contains "X-DSPAM-Reclassified" "Innocent") { # Mark as read setflag "\\Seen"; # Move into the Junk folder fileinto "Spam"; # Stop processing here stop; }
Zarim ćemo konfigurisati /etc/dovecot/conf.d/90-plugin.conf
fajl. Primetite da postoji samo jedan plugin {} dict, a ove linije idu unutar njega.
plugin { ... # Antispam (DSPAM) antispam_backend = dspam antispam_allow_append_to_spam = YES antispam_spam = Spam;Junk antispam_trash = trash;Trash antispam_signature = X-DSPAM-Signature antispam_signature_missing = error antispam_dspam_binary = /usr/bin/dspam antispam_dspam_args = --user;%u;--deliver=;--source=error antispam_dspam_spam = --class=spam antispam_dspam_notspam = --class=innocent antispam_dspam_result_header = X-DSPAM-Result }
Resetujete postfix idovecot :
service postfix restart service dovecot restart
Dolazne poruke bi trebalo da imaju sledeća zaglavlja:
X-Dspam-Result: Innocent X-Dspam-Processed: Wed Jun 12 21:46:08 2013 X-Dspam-Confidence: 0.9899 X-Dspam-Probability: 0.0000 X-Dspam-Signature: 51b9246071121935811689 X-Dspam-Factors: 27, Received*12+Jun, 0.01000, Received*12+Jun, 0.01000, Received*Postfix+with, 0.01000, Received*with+#+id, 0.01000, Received*mail.cyberpunk.rs+#+12, 0.01000, Content-Type*text+plain, 0.01000, Received*Postfix+#+ESMTP, 0.01000, Received*li212-205.members.linode.com+Postfix, 0.01000, Received*drew+#+#+#+Jun, 0.01000, Received*Wed+#+Jun, 0.01000, Received*Wed+#+Jun, 0.01000, Received*li212-205.members.linode.com+#+with, 0.01000, Received*Wed+#+#+2013, 0.01000, Received*Wed+#+#+2013, 0.01000, Received*Postfix+#+#+id, 0.01000, Received*li212-205.members.linode.com+#+#+#+id, 0.01000, Received*ESMTP+id, 0.01000, Date*12+Jun, 0.01000, Received*for+#+#+#+12, 0.01000, Date*Jun+2013, 0.01000, Received*by+#+Postfix, 0.01000, Received*by+#+with, 0.01000, Received*mail.cyberpunk.rs+#+#+Jun, 0.01000, Received*by+#+#+#+ESMTP, 0.01000, Date*Wed+#+#+2013, 0.01000, Received*drew+#+#+12, 0.01000, Received*for+#+mail.cyberpunk.rs, 0.01000
SpamAssassin
Najpre moramo da instaliramo SpamAssassin.
apt-get install spamassassin spamc
Zatim je neophodno kreirati i korisnika za SpamAssassin.
adduser spamd --disabled-login
Kako biste uspšeno konfigurisali SpamAssassin, neophodno je da otvorite i modifikujete konfiguraciona podešavanja.
nano /etc/default/spamassassin
Takođe, menjamo ENABLED parameter u enable SpamAssassin daemon.
ENABLED=1
Konfigurišemo home and options parametre.
SPAMD_HOME="/home/spamd/" OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir ${SPAMD_HOME} -s ${SPAMD_HOME}spamd.log"
Zatim određujemo PID_File parametar na sledeći način:
PIDFILE="${SPAMD_HOME}spamd.pid"
Na kraju moramo da naznačimo da će SpamAssassin pravila biti automatski aužurirana.
CRON=1
Otvaramo /etc/spamassassin/local.cf
kako bismo podesili anti-spam pravila. SpamAssassin će zapisati svaki mail i ukoliko utvrdi da je mail veči od 5.0 u spam check-u, on će se automatski smatrati neželjenim. Možete upotrebiti sledeće parametre kako biste konfigurisali anti-spam pravila:
nano /etc/spamassassin/local.cf rewrite_header Subject ***** SPAM _SCORE_ ***** report_safe 0 required_score 5.0 use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1 skip_rbl_checks 0 use_razor2 0 use_dcc 0 use_pyzor 0
Menjamo Postfix /etc/postfix/master.cf
fajl tako da svaki mail mora proći kroz SpamAssassin proveru.
nano /etc/postfix/master.cf smtp inet n - - - - smtpd -o content_filter=spamassassin
Još nekoliko koraka i sve je spremno. Dodajemo sledeće parametre:
spamassassin unix - n n - - pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}
Kako bismo počeli da proveravamo spamove kroz poštu, neophodno je da startujemo SpamAssassin i restartujemo Postfix:
service spamassassin start service postfix restart
Gotovo! Mail server sa Postfix & Dovecot, sa MySQL autentifikacijom i spam filterom bilo sa dpan-om ili SpamAssassin-om je spreman!
Stvari na kojima se još može poraditi:
- Push: email sistem koji nudi „always-on“ mogućnost, u kojem se svaki email kako stigne od strane MDA (mail delivery agent) aktivno transferuje (gura) email klijentu (MUA – mail user agent). Email klijenti uključuju pametne telefone i IMAP aplikacije za PC.
- Full-text search: oslanja se na Javu, solr-tomcat & dovecot-solr.
- Webmail: bacite pogled na sledeći tutorial vezan za jednostavnu webmail kontrolu (Rainloop).
- Zahtevanje TLS enkripcije: to nas izbacuje iz standarda (non-RFC-compliant), ali svakako će otežati život NSA.
- Greylisting: Veoma dobra ideja uključivanja “privremenog neuspeha” svaki put kada novi pošiljalac pošalje poruku. Legitimni pošiljaoci će nastaviti sa pokušavanjem, gde ćete ih nakon nekoliko minuta svrstati u listu “dobrih”. Spameri će odustati i njihove poruke nikada neće ni zakačiti disk. To je u suštini veoma laka konfiguracija, potrebno je samo da
apt-get install postgrey
, а zatim dodajtecheck_policy_service inet:127.0.0.1:10023
ispodsmtpd_client_restrictions
unutar/etc/postfix/main.cf
fajla.
, SUBSTRING(SHA(RAND()), -16))), ’email1@cyberpunk.rs’),
(‘2’, ‘1’, ENCRYPT(‘secondpassword’, CONCAT(‘$6
Virtual Pseudonimi
Napravićemo pseudonimo koji ćemo proslediti nekoj drugoj email adresi (destinaciji):
EncFS (opsiono)
Kao što možete videti na slici iznad (upozorenje prilikom instalacije), EncFS nije baš idealan. Poseduje poznate ranjivosti, pa bi možda neke druge alternative, kao što je CryFS, mogle biti bolja ideja. Za ovaj primer mi ćemo se držati EncFS-a.
Tako jednostavno. /decrypted-mail
je sada običan direktorijum. /encrypted-mail
sadrži iste podatke, samo što su enkriptovani.
Konfiguracija Postifix-a
Šta je Postfix? To je Wietse Venema’s mail server („MTA“ u email žargonu), koji je svoju „karijeru“ započeo u IBM istraživanju kao alternativa za široko upotrebljavan Sendamail program. U suštini on radi preko SMTP-a, i prispele mail-ove dostavlja Dovecot-u. Kao sledeći korak u mail server podešavanju, konfigurisaćemo Postfix da pravilno upravlja sa SMTP konekcijama i porukama sa svakog uvedenog korisnika u MySQL bazu podataka.
Za svaki slučaj, napravite rezervne kopije (beckups) konfiguracionih fajlova koje ćemo u nastavku izmeniti. Otvorite main.cf
fajl kako biste ga modifikovali:
Prvo ćemo zakomentarisati TLS parametre i dodati druge. Možete upotrebiti SSL sertifikate i preložene putanje:
ili jednostavno modifikujte fajl prema vašoj ličnoj konfiguraciju, npr. koristeći Let’s Encrypt:
Nakon toga dodajemo slede’e parametre ispod TLS podešavanja, koje smo izmenili u prethodnom koraku:
Takođe, neophodno je da zakomentarišemo mydestination
podrazumevana podešavanja i da ih zamenimo sa localhost
. Ova promena će vašem VPS-u dozvoliti da koristi virutelne domene u okviru MySQL tabele.
Proverite da li je myhostname
parametar podešen u skladu sa vašim FQDN.
Dodajte sledeću liniju koda, vezanu za prijem lokalne pošte, svim virtuelnim domenima navedenim unutar MySQL tabele.
Na kraju, dodajemo sva 3 parametra kako bismo Postfix-u rekli da konfiguriše virtuelne domene, korisnike i pseudonime.
Kreiraćemo tri konačna fajla koja ćemo dodati main.cf
fajlu kako bismo Postfix-u rekli kako da se poveže sa MySQL-om.
Najpre ćemo kreirati mysql-virtual-mailbox-domains.cf
fajl. Veoma je važno da u zavisnosti od vaše lične konfiguracije, promenite date vrednosti.
Zatim restartujemo Postfix.
Kako bismo osigurali da će Postfix pronađe vaš domen, neophodno je da to i testiramo sledećom komandom. Ako je uspešno, trebalo bi da vrati 1:
Onda kreiramo mysql-virtual-mailbox-maps.cf
fajl.
Zatim ponovo restartujemo Postfix:
U ovom trenutku ćemo osigurati da Postfix pronađe svoju prvu email adresu sledećom komandom. Ukoliko je uspešno, vratiće 1:
I na kraju kreiramo poslednji fajl kako bismo konfigurisali konekciju između Postfix-a i MySQL-a.
Restartujemo Postix ponovo:
Proveravamo da li Postfix može da pronađe vaše pseudonime. Unesite sledeću komandu koja bi trebalo da vrati mail koji je prosleđen vašem pseudonimu:
Ukoliko ćelite da omogućite da se port 587
osigurano povezuje sa vašim email klijentima, neophodno je da modifikujete /etc/postfix/master.cf
fajl:
Potrebno je da otkomentarišemo sledeće linije i dodamo druge parametre:
U nekim slučajevima je neophodno da se restartuje Postfix kako bismo bili sigurni da je port 587
otvoren:
Napomena: Možete upotrebiti „netstat -tulpn
“ cmdkako biste proverili da li vaš sistem sluša određene portove. Takođe, možete i iskoristiti ovaj alat kako biste skenirali portove vašeg domena i proverili da li su portovi 25
i 587
otvoreni.
Konfiguracija Dovecota-a
Dovecot („LDA“-Local Delivery Agent, u email žargonu) je open-source IMAP i POP3 email server Linux/UNIX sisteme, napisan sa bezbednošću na umu. U suštini, pokreće IMAP.
Napravite kopije sledećih 7 fajlova koji će biti modifikovani, kako biste bili u mogućnosti da ih vratite na podrazumevano, ukoliko to bude bilo potrebno:
Izmenite konfiguracioni fajl iz Dovecota-a:
Potvrdite da je sledeća opcija otkomentarisana:
Omogućite protokole ispod linije !include_try /usr/share/dovecot/protocols.d/*.protocol
(dodajte i POP3 ako želite):
Zatim ćemo izmeniti konfiguracioni fajl mail-a:
Pronađite liniju mail_location
, otkomentarišite je i unesite sledeći parametar:
Takođe, pronađite liniju mail_privileged_group
, otkomentarišite i nju je i dodataj sledeći parametar:
Budite sigurni da su dozvole 775 ovakve:
Kreiraćemo folder za svaki domen koji smo registrovali u okviru MySQL tabele:
Kreirajte vmail korisnika i grupu sa sa id vrednošću 5000:
Moramo da promenimo vlasnika foldera /var/mail
na vmail korisnika:
Zatim je neophodno da izmenimo /etc/dovecot/conf.d/10-auth.conf
fajl:
Otkomentarišite i/ili podesite sledeće linije:
Kreirajte/etc/dovecot/dovecot-sql.conf.ext
fajl sa vašim informacijama za autentifikaciju:
Unesite sledeći kod:
Zatim modifikujte /etc/dovecot/dovecot-sql.conf.ext
fajl sa vašim MySQL informacijama:
Otkomentarišite parametar drajvera i postavite MySQL kao parametar:
Promenite vlasnika i grupu dovecot foldera na vmail korisnika:
Otvorite i modifikujte /etc/dovecot/conf.d/10-master.conf
fajl(budite oprezni zato što će različiti parametri biti promenjeni).
Promenite unix_listener
parameter u service_auth
na sledeći način:
Takođe i service auth-worker
na sledeći način:
Na kraju modifikujemo SSL konfiguracioni fajl iz Dovecot-a (preskočite ovaj korak ukoliko planirate da iskoristite podrazumevanu konfiguraciju):
ili, kao što smo ranije spomenuli, postavite Let’s encrypt ključeve:
Generisanje SSL sertifikata:
Osim toga, trebalo bi da proverite da li je port 993
otvoren i da li radi (u slučaju da ste omogućili POP3, takođe bi trebalo da proverite i port 995
).
Čestitamo. Uspešno ste konfigurisali vaš mail server i možete ga testirati vašim nalogom koristeći email klijenta:
Napomena: za siguran IMAP upotrebite port 993
, a za SMTP portove 587
i 25
.
Izbegavanje SPAM filtera
Podesićemo SPF, OpenDKIM, i (možda) PTR.
OpenDKIM
OpenDKIM je open-source implementacija DKIM (Domain Keys Identified Mail) sistema za autentifikaciju pošiljaoca koju je predložila E-mail Signing Technology grupa (ESTG), trenutno standardizovana od strane IETF (RFC6376). U osnovi, DKIM podrazumeva digitalno potpisivanje svih poruka na serveru kako bi se verifikovalo da je poruka zapravo poslata sa određenog domena i da nije spam ili „phishing“ (i da nije modifikovana).
Nakon što ste to instalirali na vašem DNS server, konfigurišite Postfix i da upotrebi taj ključ:
Edit default opendkim:
Restart everything:
SPF
Sender Policy Framework (SPF) je jedan od načina borbe protiv spama, odnosno neželjene pošte. SPF zapis je TXT zapis koji je deo DNS zone fajla domena i određuje spisak ovlašćenih domaćina (hostnames)/IP adresa sa kojih, za određeni domen, pošta uoopšte može poticati. Sve što treba da uradite je da izmenite zone fajl:
Ovde smo zapravo rekli: „mail server za cyberpunk može da šalje poštu za cyberpunk“.
Takođe, možete debagovati DKIM (iSPF) podešavanja sa npr. ovom altkom.
Reverse PTR
Reverse DNS je jedan od osnovnih zahteva za pokretanje nekih Internet protokola. Takođe se veoma često koristi i kao spam filter kako bi se utvrdilo da li se IP adresa sa koje pristiže poruka podudara sa autentifikovanim domenom. Ukoliko dođe do nepodudaranja, poruka će biti blokirana.
Anti-Spam
Spam može da bude dosadan i opasan, tako da je uvek dobra ideja da se podese neki anti-spam servisi. Mi čemo uključiti 2: dspam and SpamAssasin.
DSpam
dodajte sledeće linije u /etc/dspam/dspam.conf
fajl:
Kreirajte direktorijum:
Ono što mogu da kažem je da su preference u/etc/dpsam/dspam.conf
u potpunosti izignorisane. Ukoliko želite da ih izmenite, pravo /etc/dspam/default.prefs
. Potupuno logićno, zar ne? U svakom slučaju, unesite sledeće vrednosti:
Izmenite/etc/postfix/master.cf
:
i
Na kraju /etc/postfix/main.cf
unesite:
Integrišite dspam sa imap-om:
Integrišite dspam sa lmtp-om:
Kažite sieve-u da neželjenu poštu pomeri u Spam folder. Izmenite/decrypted-mail/mail.cyberpunk.rs/drew/.dovecot.sieve
(npr. za vaše korisničko ime i domen):
Zarim ćemo konfigurisati /etc/dovecot/conf.d/90-plugin.conf
fajl. Primetite da postoji samo jedan plugin {} dict, a ove linije idu unutar njega.
Resetujete postfix idovecot :
Dolazne poruke bi trebalo da imaju sledeća zaglavlja:
SpamAssassin
Najpre moramo da instaliramo SpamAssassin.
Zatim je neophodno kreirati i korisnika za SpamAssassin.
Kako biste uspšeno konfigurisali SpamAssassin, neophodno je da otvorite i modifikujete konfiguraciona podešavanja.
Takođe, menjamo ENABLED parameter u enable SpamAssassin daemon.
Konfigurišemo home and options parametre.
Zatim određujemo PID_File parametar na sledeći način:
Na kraju moramo da naznačimo da će SpamAssassin pravila biti automatski aužurirana.
Otvaramo /etc/spamassassin/local.cf
kako bismo podesili anti-spam pravila. SpamAssassin će zapisati svaki mail i ukoliko utvrdi da je mail veči od 5.0 u spam check-u, on će se automatski smatrati neželjenim. Možete upotrebiti sledeće parametre kako biste konfigurisali anti-spam pravila:
Menjamo Postfix /etc/postfix/master.cf
fajl tako da svaki mail mora proći kroz SpamAssassin proveru.
Još nekoliko koraka i sve je spremno. Dodajemo sledeće parametre:
Kako bismo počeli da proveravamo spamove kroz poštu, neophodno je da startujemo SpamAssassin i restartujemo Postfix:
Gotovo! Mail server sa Postfix & Dovecot, sa MySQL autentifikacijom i spam filterom bilo sa dpan-om ili SpamAssassin-om je spreman!
Stvari na kojima se još može poraditi:
- Push: email sistem koji nudi „always-on“ mogućnost, u kojem se svaki email kako stigne od strane MDA (mail delivery agent) aktivno transferuje (gura) email klijentu (MUA – mail user agent). Email klijenti uključuju pametne telefone i IMAP aplikacije za PC.
- Full-text search: oslanja se na Javu, solr-tomcat & dovecot-solr.
- Webmail: bacite pogled na sledeći tutorial vezan za jednostavnu webmail kontrolu (Rainloop).
- Zahtevanje TLS enkripcije: to nas izbacuje iz standarda (non-RFC-compliant), ali svakako će otežati život NSA.
- Greylisting: Veoma dobra ideja uključivanja “privremenog neuspeha” svaki put kada novi pošiljalac pošalje poruku. Legitimni pošiljaoci će nastaviti sa pokušavanjem, gde ćete ih nakon nekoliko minuta svrstati u listu “dobrih”. Spameri će odustati i njihove poruke nikada neće ni zakačiti disk. To je u suštini veoma laka konfiguracija, potrebno je samo da
apt-get install postgrey
, а zatim dodajtecheck_policy_service inet:127.0.0.1:10023
ispodsmtpd_client_restrictions
unutar/etc/postfix/main.cf
fajla.
, SUBSTRING(SHA(RAND()), -16))), ’email2@cyberpunk.rs’);
Virtual Pseudonimi
Napravićemo pseudonimo koji ćemo proslediti nekoj drugoj email adresi (destinaciji):
EncFS (opsiono)
Kao što možete videti na slici iznad (upozorenje prilikom instalacije), EncFS nije baš idealan. Poseduje poznate ranjivosti, pa bi možda neke druge alternative, kao što je CryFS, mogle biti bolja ideja. Za ovaj primer mi ćemo se držati EncFS-a.
Tako jednostavno. /decrypted-mail
je sada običan direktorijum. /encrypted-mail
sadrži iste podatke, samo što su enkriptovani.
Konfiguracija Postifix-a
Šta je Postfix? To je Wietse Venema’s mail server („MTA“ u email žargonu), koji je svoju „karijeru“ započeo u IBM istraživanju kao alternativa za široko upotrebljavan Sendamail program. U suštini on radi preko SMTP-a, i prispele mail-ove dostavlja Dovecot-u. Kao sledeći korak u mail server podešavanju, konfigurisaćemo Postfix da pravilno upravlja sa SMTP konekcijama i porukama sa svakog uvedenog korisnika u MySQL bazu podataka.
Za svaki slučaj, napravite rezervne kopije (beckups) konfiguracionih fajlova koje ćemo u nastavku izmeniti. Otvorite main.cf
fajl kako biste ga modifikovali:
Prvo ćemo zakomentarisati TLS parametre i dodati druge. Možete upotrebiti SSL sertifikate i preložene putanje:
ili jednostavno modifikujte fajl prema vašoj ličnoj konfiguraciju, npr. koristeći Let’s Encrypt:
Nakon toga dodajemo slede’e parametre ispod TLS podešavanja, koje smo izmenili u prethodnom koraku:
Takođe, neophodno je da zakomentarišemo mydestination
podrazumevana podešavanja i da ih zamenimo sa localhost
. Ova promena će vašem VPS-u dozvoliti da koristi virutelne domene u okviru MySQL tabele.
Proverite da li je myhostname
parametar podešen u skladu sa vašim FQDN.
Dodajte sledeću liniju koda, vezanu za prijem lokalne pošte, svim virtuelnim domenima navedenim unutar MySQL tabele.
Na kraju, dodajemo sva 3 parametra kako bismo Postfix-u rekli da konfiguriše virtuelne domene, korisnike i pseudonime.
Kreiraćemo tri konačna fajla koja ćemo dodati main.cf
fajlu kako bismo Postfix-u rekli kako da se poveže sa MySQL-om.
Najpre ćemo kreirati mysql-virtual-mailbox-domains.cf
fajl. Veoma je važno da u zavisnosti od vaše lične konfiguracije, promenite date vrednosti.
Zatim restartujemo Postfix.
Kako bismo osigurali da će Postfix pronađe vaš domen, neophodno je da to i testiramo sledećom komandom. Ako je uspešno, trebalo bi da vrati 1:
Onda kreiramo mysql-virtual-mailbox-maps.cf
fajl.
Zatim ponovo restartujemo Postfix:
U ovom trenutku ćemo osigurati da Postfix pronađe svoju prvu email adresu sledećom komandom. Ukoliko je uspešno, vratiće 1:
I na kraju kreiramo poslednji fajl kako bismo konfigurisali konekciju između Postfix-a i MySQL-a.
Restartujemo Postix ponovo:
Proveravamo da li Postfix može da pronađe vaše pseudonime. Unesite sledeću komandu koja bi trebalo da vrati mail koji je prosleđen vašem pseudonimu:
Ukoliko ćelite da omogućite da se port 587
osigurano povezuje sa vašim email klijentima, neophodno je da modifikujete /etc/postfix/master.cf
fajl:
Potrebno je da otkomentarišemo sledeće linije i dodamo druge parametre:
U nekim slučajevima je neophodno da se restartuje Postfix kako bismo bili sigurni da je port 587
otvoren:
Napomena: Možete upotrebiti „netstat -tulpn
“ cmdkako biste proverili da li vaš sistem sluša određene portove. Takođe, možete i iskoristiti ovaj alat kako biste skenirali portove vašeg domena i proverili da li su portovi 25
i 587
otvoreni.
Konfiguracija Dovecota-a
Dovecot („LDA“-Local Delivery Agent, u email žargonu) je open-source IMAP i POP3 email server Linux/UNIX sisteme, napisan sa bezbednošću na umu. U suštini, pokreće IMAP.
Napravite kopije sledećih 7 fajlova koji će biti modifikovani, kako biste bili u mogućnosti da ih vratite na podrazumevano, ukoliko to bude bilo potrebno:
Izmenite konfiguracioni fajl iz Dovecota-a:
Potvrdite da je sledeća opcija otkomentarisana:
Omogućite protokole ispod linije !include_try /usr/share/dovecot/protocols.d/*.protocol
(dodajte i POP3 ako želite):
Zatim ćemo izmeniti konfiguracioni fajl mail-a:
Pronađite liniju mail_location
, otkomentarišite je i unesite sledeći parametar:
Takođe, pronađite liniju mail_privileged_group
, otkomentarišite i nju je i dodataj sledeći parametar:
Budite sigurni da su dozvole 775 ovakve:
Kreiraćemo folder za svaki domen koji smo registrovali u okviru MySQL tabele:
Kreirajte vmail korisnika i grupu sa sa id vrednošću 5000:
Moramo da promenimo vlasnika foldera /var/mail
na vmail korisnika:
Zatim je neophodno da izmenimo /etc/dovecot/conf.d/10-auth.conf
fajl:
Otkomentarišite i/ili podesite sledeće linije:
Kreirajte/etc/dovecot/dovecot-sql.conf.ext
fajl sa vašim informacijama za autentifikaciju:
Unesite sledeći kod:
Zatim modifikujte /etc/dovecot/dovecot-sql.conf.ext
fajl sa vašim MySQL informacijama:
Otkomentarišite parametar drajvera i postavite MySQL kao parametar:
Promenite vlasnika i grupu dovecot foldera na vmail korisnika:
Otvorite i modifikujte /etc/dovecot/conf.d/10-master.conf
fajl(budite oprezni zato što će različiti parametri biti promenjeni).
Promenite unix_listener
parameter u service_auth
na sledeći način:
Takođe i service auth-worker
na sledeći način:
Na kraju modifikujemo SSL konfiguracioni fajl iz Dovecot-a (preskočite ovaj korak ukoliko planirate da iskoristite podrazumevanu konfiguraciju):
ili, kao što smo ranije spomenuli, postavite Let’s encrypt ključeve:
Generisanje SSL sertifikata:
Osim toga, trebalo bi da proverite da li je port 993
otvoren i da li radi (u slučaju da ste omogućili POP3, takođe bi trebalo da proverite i port 995
).
Čestitamo. Uspešno ste konfigurisali vaš mail server i možete ga testirati vašim nalogom koristeći email klijenta:
Napomena: za siguran IMAP upotrebite port 993
, a za SMTP portove 587
i 25
.
Izbegavanje SPAM filtera
Podesićemo SPF, OpenDKIM, i (možda) PTR.
OpenDKIM
OpenDKIM je open-source implementacija DKIM (Domain Keys Identified Mail) sistema za autentifikaciju pošiljaoca koju je predložila E-mail Signing Technology grupa (ESTG), trenutno standardizovana od strane IETF (RFC6376). U osnovi, DKIM podrazumeva digitalno potpisivanje svih poruka na serveru kako bi se verifikovalo da je poruka zapravo poslata sa određenog domena i da nije spam ili „phishing“ (i da nije modifikovana).
Nakon što ste to instalirali na vašem DNS server, konfigurišite Postfix i da upotrebi taj ključ:
Edit default opendkim:
Restart everything:
SPF
Sender Policy Framework (SPF) je jedan od načina borbe protiv spama, odnosno neželjene pošte. SPF zapis je TXT zapis koji je deo DNS zone fajla domena i određuje spisak ovlašćenih domaćina (hostnames)/IP adresa sa kojih, za određeni domen, pošta uoopšte može poticati. Sve što treba da uradite je da izmenite zone fajl:
Ovde smo zapravo rekli: „mail server za cyberpunk može da šalje poštu za cyberpunk“.
Takođe, možete debagovati DKIM (iSPF) podešavanja sa npr. ovom altkom.
Reverse PTR
Reverse DNS je jedan od osnovnih zahteva za pokretanje nekih Internet protokola. Takođe se veoma često koristi i kao spam filter kako bi se utvrdilo da li se IP adresa sa koje pristiže poruka podudara sa autentifikovanim domenom. Ukoliko dođe do nepodudaranja, poruka će biti blokirana.
Anti-Spam
Spam može da bude dosadan i opasan, tako da je uvek dobra ideja da se podese neki anti-spam servisi. Mi čemo uključiti 2: dspam and SpamAssasin.
DSpam
dodajte sledeće linije u /etc/dspam/dspam.conf
fajl:
Kreirajte direktorijum:
Ono što mogu da kažem je da su preference u/etc/dpsam/dspam.conf
u potpunosti izignorisane. Ukoliko želite da ih izmenite, pravo /etc/dspam/default.prefs
. Potupuno logićno, zar ne? U svakom slučaju, unesite sledeće vrednosti:
Izmenite/etc/postfix/master.cf
:
i
Na kraju /etc/postfix/main.cf
unesite:
Integrišite dspam sa imap-om:
Integrišite dspam sa lmtp-om:
Kažite sieve-u da neželjenu poštu pomeri u Spam folder. Izmenite/decrypted-mail/mail.cyberpunk.rs/drew/.dovecot.sieve
(npr. za vaše korisničko ime i domen):
Zarim ćemo konfigurisati /etc/dovecot/conf.d/90-plugin.conf
fajl. Primetite da postoji samo jedan plugin {} dict, a ove linije idu unutar njega.
Resetujete postfix idovecot :
Dolazne poruke bi trebalo da imaju sledeća zaglavlja:
SpamAssassin
Najpre moramo da instaliramo SpamAssassin.
Zatim je neophodno kreirati i korisnika za SpamAssassin.
Kako biste uspšeno konfigurisali SpamAssassin, neophodno je da otvorite i modifikujete konfiguraciona podešavanja.
Takođe, menjamo ENABLED parameter u enable SpamAssassin daemon.
Konfigurišemo home and options parametre.
Zatim određujemo PID_File parametar na sledeći način:
Na kraju moramo da naznačimo da će SpamAssassin pravila biti automatski aužurirana.
Otvaramo /etc/spamassassin/local.cf
kako bismo podesili anti-spam pravila. SpamAssassin će zapisati svaki mail i ukoliko utvrdi da je mail veči od 5.0 u spam check-u, on će se automatski smatrati neželjenim. Možete upotrebiti sledeće parametre kako biste konfigurisali anti-spam pravila:
Menjamo Postfix /etc/postfix/master.cf
fajl tako da svaki mail mora proći kroz SpamAssassin proveru.
Još nekoliko koraka i sve je spremno. Dodajemo sledeće parametre:
Kako bismo počeli da proveravamo spamove kroz poštu, neophodno je da startujemo SpamAssassin i restartujemo Postfix:
Gotovo! Mail server sa Postfix & Dovecot, sa MySQL autentifikacijom i spam filterom bilo sa dpan-om ili SpamAssassin-om je spreman!
Stvari na kojima se još može poraditi:
- Push: email sistem koji nudi „always-on“ mogućnost, u kojem se svaki email kako stigne od strane MDA (mail delivery agent) aktivno transferuje (gura) email klijentu (MUA – mail user agent). Email klijenti uključuju pametne telefone i IMAP aplikacije za PC.
- Full-text search: oslanja se na Javu, solr-tomcat & dovecot-solr.
- Webmail: bacite pogled na sledeći tutorial vezan za jednostavnu webmail kontrolu (Rainloop).
- Zahtevanje TLS enkripcije: to nas izbacuje iz standarda (non-RFC-compliant), ali svakako će otežati život NSA.
- Greylisting: Veoma dobra ideja uključivanja “privremenog neuspeha” svaki put kada novi pošiljalac pošalje poruku. Legitimni pošiljaoci će nastaviti sa pokušavanjem, gde ćete ih nakon nekoliko minuta svrstati u listu “dobrih”. Spameri će odustati i njihove poruke nikada neće ni zakačiti disk. To je u suštini veoma laka konfiguracija, potrebno je samo da
apt-get install postgrey
, а zatim dodajtecheck_policy_service inet:127.0.0.1:10023
ispodsmtpd_client_restrictions
unutar/etc/postfix/main.cf
fajla.