Kako v Linuxu konfigurirati Postfix in Dovecot z uporabniki navidezne domene - 2. del


V prejšnjem članku te serije smo razložili, kako varno nastaviti in upravljati bazo podatkov poštnega strežnika z uporabo phpMyAdmin.

  1. Namestite poštni strežnik Postfix in Dovecot z MariaDB - 1. del

Zdaj je čas, da konfigurirate interne programe, ki bodo uresničevali pošiljanje in prejemanje e-poštnih sporočil: Postfix in Dovecot (za obdelavo odhodne in dohodne e-pošte).

Konfiguriranje poštnega strežnika Postfix

Preden začnete konfigurirati Postfix, bi si bilo vredno ogledati njegove priročne strani tukaj, s posebnim poudarkom na razdelku z naslovom »Informacije za nove uporabnike Postfix«. V tem primeru boste lažje sledili tej vadnici.

Z nekaj besedami bi morali vedeti, da obstajata dve konfiguracijski datoteki za Postfix:

  1. /etc/postfix/main.cf (konfiguracijski parametri Postfix, za več podrobnosti glejte man 5 postconf).
  2. /etc/postfix/master.cf (Konfiguracija glavnega demona Postfix, glejte man 5 master za dodatne podrobnosti).

V /etc/postfix/main.cf poiščite (ali dodajte, če je potrebno) naslednje vrstice in se prepričajte, da ustrezajo spodnjim vrednostim:

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

Naslednje tri nastavitve so še posebej pomembne. V datotekah, označenih z rumeno, bomo konfigurirali dostop Postfixa do tabel Domains_tbl, Users_tbl in 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

Zgoraj lahko izberete različna imena datotek, če jih ustvarite in vanje vstavite naslednjo vsebino. V vsakem primeru zamenjajte YourPassword z geslom, ki ste ga izbrali za uporabnika dba v 1. delu, ali pa uporabite spodnje korenske poverilnice MariaDB za uporabnika in geslo.

Prepričajte se tudi, da uporabljate popolnoma enaka imena baze podatkov e-poštnega strežnika in tabel, ustvarjenih v 1. delu.

V /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'

V /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'

V /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 koncu ne pozabite spremeniti dovoljenj za te datoteke na 640:

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

In lastništvo uporabniškega korenskega in skupinskega postfiksa:

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

Nato za omogočanje varnih povezav moramo zagotoviti, da naslednje nastavitve niso komentirane (ali po potrebi dodane) v /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

Opomba: Zamik v vrsticah, ki se začnejo z možnostjo -o , je ključnega pomena; sicer bo preverjanje postfix vrnilo napako:

Preden shranite spremembe, dodajte naslednje vrstice na dno datoteke:

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

Na tej točki je nujno preveriti, ali ima Postfix dostop do tabel zbirke podatkov in domen, računov in vzdevkov, ki smo jih ustvarili v 1. delu.

V ta namen bomo uporabili ukaz postmap, pripomoček za preizkušanje komunikacije s tabelami, ki jih bo Postfix poiskal med delovanjem, vendar moramo najprej znova zagnati 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 spodnji sliki lahko vidimo, da se za obstoječe zapise v bazi vrne 1. V nasprotnem primeru se nič ne prikaže nazaj na zaslon. V primeru preverjanja vzdevka upoštevajte, da se vrne dejanski e-poštni račun, na katerega je vzdevek preslikan:

Upoštevajte, da NE preverjamo pristnosti poverilnic, nastavljenih za vsak e-poštni račun, preizkušamo samo zmožnost Postfixa, da zazna te zapise v zbirki podatkov.

Če dobite drugačne rezultate kot zgoraj, se prepričajte, da uporabljate veljaven par uporabnik/geslo v mariadb-vdomains.cf, mariadb-vusers.cf in mariadb-valias.cf (ali karkoli ste že izbrali, da pokličete te datoteke ).

Konfiguriranje Dovecot

Dovecot kot strežnik IMAP/POP3 ponuja uporabnikom način prek agenta za pošto uporabnikov (MUA ali tudi odjemalca), kot sta Thunderbird ali Outlook, da naštejejo nekaj primerov dostopa do njihove pošte.

Za začetek ustvarimo uporabnika in skupino za obdelavo e-pošte (to bomo potrebovali, saj naši e-poštni računi niso povezani s sistemskim uporabnikom). Če ne uporabljate in je veliko število, lahko uporabite drug UID in GID (razen 5000, kot to storimo spodaj):

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

Nastavitve za Dovecot so razdeljene na več konfiguracijskih datotek (prepričajte se, da so naslednje vrstice nekomentirane in/ali jih uredite, da ustrezajo spodnjim nastavitvam).

V /etc/dovecot/dovecot.conf :

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

V /etc/dovecot/conf.d/10-auth.conf (omogočite samo preverjanje pristnosti prek SQL in pustite komentarje drugih načinov preverjanja pristnosti):

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

V /etc/dovecot/conf.d/auth-sql.conf.ext (upoštevajte, da bomo e-poštna sporočila shranili v imenik z imenom yourdomain.com znotraj/home/vmail, ki ga morate ustvariti, če ne obstaja. V našem primeru smo za upravljanje e-poštnih sporočil za to domeno naredili mkdir /home/vmail/linuxnewz.com):

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

Posamezni nabiralniki za uporabniške račune bodo ustvarjeni, ko bodo e-poštna sporočila za te račune prvič prejeta.

V /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

V /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 {
  }
}

V /etc/dovecot/conf.d/10-ssl.conf (zamenjajte pot do potrdil in ključev, če nameravate uporabiti potrdilo, podpisano s strani overitelja potrdil):

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

V /etc/dovecot/dovecot-sql.conf.ext vnesite podatke o zbirki podatkov in poverilnice skrbniškega uporabnika, ustvarjene v 1. delu.

Pomembno: če vaše geslo vsebuje zvezdico (#) , boste morali priložiti niz za povezovanje, kot je navedeno v spodnjem primeru:

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

Poleg tega lahko nastavite beleženje Dovecot tako, da je ločeno od Postfix v /etc/dovecot/conf.d/10-logging.conf :

log_path = /var/log/dovecot.log

Na koncu se prepričajte, da je dnevnik golobice dostopen za uporabnika golobice:

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

Preverite in popravite konfiguracijo Postifix ter v požarnem zidu omogočite SMTP, POP3 in IMAP

Če med konfiguriranjem Postfix in/ali Dovecot naletite na kakršne koli težave, namesto da vse konfiguracijske datoteke pošljete na prošnjo za pomoč, lahko dobite povzetek konfiguracije (samo nekomentirane vrstice) z:

# 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

Poleg tega poskrbite, da bodo nabiralniki e-pošte berljivi samo vmailu:

# chown –R vmail:vmail /home/vmail

Uporabniki vmail in dovecot bi morali brati tudi konfiguracijske datoteke:

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

Nazadnje pazite, da prek požarnega zidu omogočite SMTP, POP3 in IMAP:

# 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 kot e-poštnega odjemalca za Postfix

Čas je, da prek požarnega zidu zagotovite dostop do vrat, ki se uporabljajo v e-poštnih komunikacijah, čas za konfiguracijo e-poštnega odjemalca. Z uporabo [email in ustreznega gesla ter mail.linuxnewz.com kot strežnika IMAP (ali POP3) in SMTP smo pripravljeni na pošiljanje in prejemanje e-poštnih sporočil na in iz tega računa:

Prikazano opozorilno sporočilo lahko varno prezrete, ker uporabljate potrdilo, ki ga ni podpisal zaupanja vreden neodvisni CA:

Sestavimo kratek testni e-poštni naslov in kliknite Pošlji:

Ko boste pozvani, da sprejmete samopodpisano potrdilo za odhodni strežnik, ga potrdite prej kot prej:

Na koncu pojdite na ciljno e-pošto in preverite, ali ste prejeli pravkar poslano e-pošto. Če je odgovor pritrdilen, odgovorite nanj in preverite, ali je poslan nazaj v izvorno poštno mapo (v nasprotnem primeru za informacije o odpravljanju težav poglejte v dnevnik Postfix na/var/log/maillog ali dnevnik Dovecot na /var/log/dovecot.log) :

Zdaj imate delujoč e-poštni strežnik Postfix in Dovecot in lahko začnete pošiljati in prejemati e-pošto.

Povzetek

V tem članku smo razložili, kako konfigurirati Postfix in Dovecot za obdelavo e-poštnega prometa v vašem Linux strežniku. Če nekaj ne deluje, kot je navedeno v tem članku, si vzemite čas za pregled dokumentacije Dovecot.

Upoštevajte, da čeprav postavitev poštnega strežnika Postfix ni lahka naloga, je za vsakega sistemskega skrbnika koristna izkušnja.

Če se po pregledu dokumentov še vedno spopadate s Postfixom in/ali Dovecotom, nam, prosimo, pošljite opombo s spodnjim obrazcem za komentar in z veseljem vam bomo pomagali (ne pozabite naložiti na spletno storitev za shranjevanje konfiguracija Postfix in Dovecot, pridobljena s pomočjo postconf in doveconf, kot je opisano v tem članku).