Kako konfigurirati Postfix i Dovecot s korisnicima virtualne domene u Linuxu - 2. dio


U prethodnom članku ove serije objasnili smo kako bezbedno postaviti i upravljati bazom podataka mail servera koristeći phpMyAdmin.

Zahtjev:

  1. Instalirajte Postfix Mail Server i Dovecot s MariaDB – 1. dio

Sada je vrijeme da konfigurirate interne programe koji će slanje i primanje e-pošte postati stvarnost: Postfix i Dovecot (za obradu odlaznih i dolaznih e-poruka).

Konfigurisanje Postfix servera pošte

Prije nego počnete konfigurirati Postfix, bilo bi vrijedno i dobro da pogledate njegove man stranice ovdje, stavljajući poseban naglasak na odjeljak pod naslovom “Informacije za nove korisnike Postfix-a“ . Ako to učinite, lakše ćete pratiti ovaj vodič.

U nekoliko riječi, trebali biste znati da postoje dvije konfiguracijske datoteke za Postfix:

  1. /etc/postfix/main.cf (Parametri konfiguracije Postfixa, pogledajte man 5 postconf za više detalja).
  2. /etc/postfix/master.cf (Konfiguracija Postfix glavnog demona, pogledajte man 5 master za više detalja).

U /etc/postfix/main.cf, pronađite (ili dodajte, ako je potrebno) sljedeće redove i provjerite da li odgovaraju vrijednostima navedenim u nastavku:


append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
message_size_limit = 4194304
readme_directory = no
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
virtual_transport = dovecot
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

Sljedeće tri postavke su od posebnog značaja. U fajlovima označenim žutom bojom konfigurisaćemo Postfixov pristup tabelama Domains_tbl, Users_tbl i Alias_tbl:


virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf
virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf

Imajte na umu da gore možete odabrati različite nazive datoteka, pod uslovom da ih kreirate i u njih umetnete sljedeći sadržaj. U svakom slučaju, zamijenite Vašu lozinku lozinkom koju ste odabrali za dba korisnika u 1. dijelu, ili također možete koristiti MariaDB root vjerodajnice za korisnika i lozinku ispod.

Također, uvjerite se da koristite potpuno iste nazive baze podataka servera e-pošte i tabela kreiranih u 1. dijelu.

U /etc/postfix/mariadb-vdomains.cf:


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'

U /etc/postfix/mariadb-vusers.cf:


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT 1 FROM Users_tbl WHERE Email='%s'

U /etc/postfix/mariadb-valias.cf:


user = dba
password = YourPassword
hosts = 127.0.0.1
dbname = EmailServer_db
query = SELECT Destination FROM Alias_tbl WHERE Source='%s'

Konačno, ne zaboravite promijeniti dozvole za ove fajlove na 640:


chmod 640 /etc/postfix/mariadb-vdomains.cf
chmod 640 /etc/postfix/mariadb-vusers.cf
chmod 640 /etc/postfix/mariadb-valias.cf

I vlasništvo korisnika root i grupe postfix:


chown root:postfix /etc/postfix/mariadb-vdomains.cf
chown root:postfix /etc/postfix/mariadb-vusers.cf
chown root:postfix /etc/postfix/mariadb-valias.cf

Zatim, da omogućimo sigurne veze, moramo se pobrinuti da sljedeće postavke nisu komentirane (ili dodane, ako je potrebno) u /etc/postfix/master.cf:


submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp

showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
#virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

Napomena: Uvlačenje u redovima koji počinju sa -o opcijom je kritično; inače će postfix provjera vratiti grešku:

Prije nego što spremite promjene, dodajte sljedeće redove na dno datoteke:


dovecot   unix  -       n       n       -       -       pipe
    flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}

U ovom trenutku je bitno provjeriti da li Postfix ima pristup tabelama baze podataka i domenima, nalozima i alijasima koje smo kreirali u 1. dijelu.

Da bismo to učinili, koristit ćemo naredbu postmap, uslužni program za testiranje komunikacije sa tabelama koje će Postfix tražiti tokom rada, ali prije svega ćemo morati ponovo pokrenuti postfix:


systemctl postfix restart
postmap -q linuxnewz.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q someotherdomain.com mysql:/etc/postfix/mariadb-vdomains.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-vusers.cf
postmap -q [email  mysql:/etc/postfix/mariadb-valias.cf

Na slici ispod možemo vidjeti da se za postojeće zapise u bazi podataka vraća 1. U suprotnom, ništa se neće prikazati na ekranu. U slučaju provjere pseudonima, imajte na umu da se vraća stvarni račun e-pošte na koji je pseudonim mapiran:

Imajte na umu da NE autentifikujemo prema vjerodajnicama postavljenim za svaki nalog e-pošte, samo testiramo sposobnost Postfixa da otkrije te zapise u bazi podataka.

Stoga, ako dobijete drugačiji izlaz od prethodnog, provjerite koristite li važeći par korisnik/lozinka u mariadb-vdomains.cf, mariadb-vusers.cf i mariadb-valias.cf (ili kako god ste odabrali da nazovete te fajlove).

Konfiguriranje Dovecot-a

Kao IMAP/POP3 server, Dovecot pruža put do korisnika putem Korisničkog agenta za poštu (MUA, ili također poznat kao klijent), kao što je Thunderbird ili Outlook, da navedemo nekoliko primjera za pristup njihovoj pošti.

Za početak, kreirajmo korisnika i grupu za obradu e-pošte (ovo će nam trebati jer naši računi e-pošte nisu povezani s korisnikom sistema). Možete koristiti drugi UID i GID (osim 5000 kao što radimo u nastavku) sve dok nije u upotrebi i ako je visok broj:


groupadd -g 5000 vmail 
useradd -g vmail -u 5000 vmail -d /home/vmail -m

Postavke za Dovecot su podijeljene na nekoliko konfiguracijskih datoteka (uvjerite se da su sljedeći redovi bez komentara i/ili ih uredite tako da odgovaraju postavkama navedenim u nastavku).

U /etc/dovecot/dovecot.conf:


!include_try /usr/share/dovecot/protocols.d/*.protocol
protocols = imap pop3 lmtp
!include conf.d/*.conf
!include_try local.conf

U /etc/dovecot/conf.d/10-auth.conf (omogućite samo autentifikaciju putem SQL-a i ostavite komentarisane druge metode provjere autentičnosti):


disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext

U /etc/dovecot/conf.d/auth-sql.conf.ext (imajte na umu da ćemo e-poštu pohranjivati unutar direktorija pod nazivom vaša domena.com unutar / home/vmail, koji morate kreirati ako ne postoji. U našem slučaju smo uradili mkdir /home/vmail/linuxnewz.com za upravljanje emailovima za tu domenu):


passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir
}

Individualni sandučići za korisničke naloge biće kreirani kada se e-poruke za takve naloge prvi put prime.

U /etc/dovecot/conf.d/10-mail.conf:


mail_location = maildir:/home/vmail/%d/%n/Maildir
namespace inbox {
  inbox = yes
}
mail_privileged_group = mail
mbox_write_locks = fcntl

U /etc/dovecot/conf.d/10-master.conf:


service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
   mode = 0600
   user = postfix
   group = postfix
  }
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
  unix_listener auth-userdb {
   mode = 0600
   user = vmail
  }
  user = dovecot
}
service auth-worker {
  user = vmail
}
service dict {
  unix_listener dict {
  }
}

U /etc/dovecot/conf.d/10-ssl.conf (zamijenite certifikat i puteve ključeva ako planirate koristiti certifikat potpisan od strane CA):


ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

U /etc/dovecot/dovecot-sql.conf.ext unesite informacije o vašoj bazi podataka i vjerodajnice administrativnog korisnika kreirane u 1. dijelu.

Važno: ako vaša lozinka sadrži zvjezdicu (#), morat ćete priložiti niz za povezivanje kao što je prikazano u primjeru ispod:


driver = mysql
connect = "host=127.0.0.1 dbname=EmailServer_db user=dba password=PassWith#Here"
default_pass_scheme = SHA512-CRYPT
password_query = SELECT Email as User, password FROM Users_tbl WHERE Email='%u';

Dodatno, možete konfigurirati evidentiranje za Dovecot da bude odvojeno od Postfix-a u /etc/dovecot/conf.d/10-logging.conf:


log_path = /var/log/dovecot.log

Na kraju, provjerite je li dnevnik Dovecot dostupan korisniku dovecot:


chown vmail:dovecot /var/log/dovecot.log
chmod 660 /var/log/dovecot.log

Potvrdite i popravite Postifix konfiguraciju i omogućite SMTP, POP3 i IMAP u Firewall-u

Ako slučajno naiđete na bilo kakve probleme tokom konfiguriranja Postfix-a i/ili Dovecot-a, umjesto da pošaljete sve konfiguracijske datoteke da tražite pomoć, možete dobiti sažetak konfiguracije (samo nekomentirani redovi) sa:


postconf –n # Summary for /etc/postfix/main.cf
postconf –M # Summary for /etc/postfix/master.cf
doveconf –n # Summary of all configuration files for Dovecot

Osim toga, uvjerite se da su prijemni sandučići e-pošte čitljivi samo vmailom:


chown –R vmail:vmail /home/vmail

Konfiguracijske fajlove bi također trebali čitati korisnici vmail i dovecot:


chown -R vmail:dovecot /etc/dovecot 
chmod -R o-rwx /etc/dovecot 

Konačno, provjerite jeste li omogućili SMTP, POP3 i IMAP putem zaštitnog zida:


firewall-cmd --add-port=143/tcp
firewall-cmd --add-port=143/tcp --permanent
firewall-cmd --add-port=110/tcp
firewall-cmd --add-port=110/tcp --permanent
firewall-cmd --add-port=587/tcp
firewall-cmd --add-port=587/tcp --permanent

Konfigurišite Thunderbird kao klijenta e-pošte za Postfix

Nakon što ste osigurali pristup kroz firewall za portove koji se koriste u komunikaciji putem e-pošte, vrijeme je da konfigurirate klijenta e-pošte. Koristeći [email  i odgovarajuću lozinku, zajedno sa mail.linuxnewz.com kao IMAP (ili POP3) i SMTP server, spremni smo za početak slanja i primanja e-pošte na i sa takvog računa:

Možete sa sigurnošću zanemariti poruku upozorenja koja se prikazuje jer koristite certifikat koji nije potpisan od pouzdanog CA treće strane:

Sastavimo kratku probnu e-poruku i kliknite na Pošalji:

Kada se od vas zatraži da prihvatite samopotpisani certifikat za odlazni server, potvrdite ga prethodno kao i prije:

Na kraju, idite na odredišnu e-poštu da vidite jeste li primili e-poštu koja je upravo poslana. Ako je tako, odgovorite na njega i provjerite da li je isporučen nazad u izvorni sandučić e-pošte (u suprotnom, pogledajte Postfix dnevnik na /var/log/maillog ili dnevnik Dovecot na /var /log/dovecot.log za informacije o rješavanju problema):

Sada imate ispravan Postfix i Dovecot server e-pošte i možete početi slati i primati e-poštu.

Sažetak

U ovom članku smo objasnili kako konfigurirati Postfix i Dovecot da upravljaju prometom e-pošte na vašem Linux serveru. Ako nešto ne radi kako je navedeno u ovom članku, pobrinite se da odvojite vrijeme da provjerite dokumentaciju za Postfix i Dovecot.

Imajte na umu da, iako postavljanje Postfix servera pošte nije lak zadatak, to je korisno iskustvo za svakog administratora sistema.

Ako nakon pregleda dokumenata i dalje imate problema sa Postfixom i/ili Dovecotom, slobodno nam pošaljite poruku koristeći formular za komentare ispod i bit će nam drago pomoći vam (ne zaboravite da otpremite na servis za skladištenje na mreži Postfix i Dovecot konfiguraciju kako je preuzeto pomoću postconf i doveconf kao što je navedeno u ovom članku).