Mail server podešavanje (Postfix, Dovecot, MySQL, SpamAssasin)


Mail server podešavanje (Postfix, Dovecot, MySQL, SpamAssasin)

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)

Mail server podešavanje

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 dodajte check_policy_service inet:127.0.0.1:10023 ispod smtpd_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 dodajte check_policy_service inet:127.0.0.1:10023 ispod smtpd_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 dodajte check_policy_service inet:127.0.0.1:10023 ispod smtpd_client_restrictions unutar/etc/postfix/main.cf fajla.