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


U prethodnom članku ove serije objasnili smo kako sigurno postaviti i upravljati bazom podataka poslužitelja e-pošte pomoću phpMyAdmina.

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 učiniti stvarnošću: Postfix i Dovecot (za obradu odlazne i dolazne e-pošte).

Konfiguriranje Postfix Mail Servera

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

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

  1. /etc/postfix/main.cf (Postfix konfiguracijski parametri, pogledajte man 5 postconf za više detalja).
  2. /etc/postfix/master.cf (Konfiguracija Postfix glavnog demona, pogledajte man 5 master za dodatne detalje).

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


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 posebne važnosti. U datotekama označenim žutom bojom konfigurirat ćemo Postfixov pristup tablicama 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, sve dok ih ne zaboravite stvoriti i u njih umetnuti sljedeće sadržaje. U svakom slučaju zamijenite YourPassword lozinkom koju ste odabrali za korisnika dba u 1. dijelu ili također možete koristiti MariaDB korijenske vjerodajnice za korisnika i lozinku ispod.

Također, provjerite koristite li iste nazive baze podataka poslužitelja e-pošte i tablica stvorenih 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'

Na kraju, ne zaboravite promijeniti dopuštenja za ove datoteke 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

Dalje, da bismo omogućili sigurne veze, moramo osigurati da sljedeće postavke budu bez komentara (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 s opcijom -o je kritično; inače će postfix provjera vratiti pogrešku:

Prije nego što spremite promjene, dodajte sljedeće retke 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 bitno je provjeriti ima li Postfix pristup tablicama baze podataka i domenama, računima i aliasima koje smo stvorili u 1. dijelu.

Da bismo to učinili, koristit ćemo naredbu postmap, pomoćni program za testiranje komunikacije s tablicama koje će Postfix tražiti tijekom rada, ali prije svega trebat ćemo ponovno 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. Inače se ništa ne prikazuje na zaslonu. U slučaju provjere aliasa, imajte na umu da se vraća stvarni račun e-pošte na koji je alias mapiran:

Imajte na umu da NE provjeravamo vjerodajnice postavljene za svaki račun e-pošte, mi samo testiramo sposobnost Postfixa da otkrije te zapise u bazi podataka.

Dakle, ako dobijete drugačiji izlaz od gore navedenog, 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 zvati te datoteke).

Konfiguriranje Dovecota

Kao IMAP/POP3 poslužitelj, Dovecot pruža put korisnicima kroz Mail User Agent (MUA, ili također poznat kao klijent), kao što su Thunderbird ili Outlook, da navedemo nekoliko primjera pristupa njihovoj pošti.

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


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

Postavke za Dovecot podijeljene su u nekoliko konfiguracijskih datoteka (provjerite jesu li 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 provjeru autentičnosti putem SQL-a i ostavite ostale metode provjere autentičnosti komentirane):


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 pohraniti e-poštu unutar direktorija pod nazivom yourdomain.com unutar / home/vmail, koju morate kreirati ako ne postoji. U našem slučaju napravili smo mkdir /home/vmail/linuxnewz.com za upravljanje e-poštom 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
}

Pojedinačni pretinci ulazne pošte za korisničke račune stvorit će se kada se prvi put primi e-pošta za takve račune.

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 putanje ključa 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 svojoj bazi podataka i vjerodajnice administrativnog korisnika kreiranog u 1. dijelu.

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


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';

Osim toga, možete konfigurirati bilježenje za Dovecot da bude odvojeno od Postfixa u /etc/dovecot/conf.d/10-logging.conf:


log_path = /var/log/dovecot.log

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


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

Provjerite i popravite Postifix konfiguraciju i omogućite SMTP, POP3 i IMAP u vatrozidu

Ako slučajno naiđete na bilo kakve probleme tijekom konfiguriranja Postfixa i/ili Dovecota, umjesto da pošaljete sve konfiguracijske datoteke i zatražite pomoć, možete dobiti sažetak konfiguracije (samo retke bez komentara) s:


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, provjerite može li pretinac e-pošte moći čitati samo vmail:


chown –R vmail:vmail /home/vmail

Konfiguracijske datoteke bi također trebale moći čitati korisnici vmail i dovecot:


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

Na kraju, provjerite jeste li omogućili SMTP, POP3 i IMAP kroz vatrozid:


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

Konfigurirajte Thunderbird kao klijenta e-pošte za Postfix

Imajući osiguran pristup kroz vatrozid za priključke koji se koriste u komunikaciji e-poštom, vrijeme je da konfigurirate klijenta e-pošte. Koristeći [email  i odgovarajuću lozinku, zajedno s mail.linuxnewz.com kao IMAP (ili POP3) i SMTP poslužitelj, spremni smo započeti slanje i primanje e-pošte na i sa takvog računa:

Možete slobodno zanemariti poruku upozorenja koja se prikazuje jer koristite certifikat koji nije potpisao pouzdani CA treće strane:

Sastavimo kratku testnu e-poštu i kliknimo Pošalji:

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

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

Sada imate poslužitelj e-pošte Postfix i Dovecot koji radi i možete početi slati i primati e-poštu.

Sažetak

U ovom smo članku objasnili kako konfigurirati Postfix i Dovecot za upravljanje prometom e-pošte na vašem Linux poslužitelju. Ako nešto ne radi kako je navedeno u ovom članku, provjerite dokumentaciju Postfixa i Dovecota.

Imajte na umu da iako postavljanje Postfix poslužitelja e-pošte nije lak zadatak, to je korisno iskustvo za svakog administratora sustava.

Ako nakon pregledavanja dokumenata ustanovite da se još uvijek mučite s Postfixom i/ili Dovecotom, slobodno nam pošaljite poruku koristeći obrazac za komentare u nastavku i bit će nam drago pomoći (ne zaboravite prenijeti na mrežnu uslugu pohrane konfiguraciju Postfixa i Dovecota kako je dohvaćena pomoću postconf i doveconf kako je navedeno u ovom članku).