Kaip sukonfigūruoti „Postfix“ ir „Dovecot“ su virtualaus domeno vartotojais sistemoje „Linux“ – 2 dalis


Ankstesniame šios serijos straipsnyje paaiškinome, kaip saugiai nustatyti ir valdyti pašto serverio duomenų bazę naudojant phpMyAdmin.

Reikalavimas:

  1. Įdiekite Postfix Mail Server ir Dovecot su MariaDB – 1 dalis

Dabar laikas sukonfigūruoti vidines programas, kurios pavers el. laiškų siuntimu ir gavimu realybe: Postfix ir Dovecot (atitinkamai siunčiamiems ir gaunamiems el. laiškams tvarkyti).

„Postfix“ pašto serverio konfigūravimas

Prieš pradėdami konfigūruoti Postfix, verta pažvelgti į jos vadovo puslapius čia, ypatingą dėmesį skiriant skyriui „Informacija naujiems Postfix naudotojams“. . Jei tai padarysite, jums bus lengviau sekti šią mokymo programą.

Trumpai tariant, turėtumėte žinoti, kad yra du Postfix konfigūracijos failai:

  1. /etc/postfix/main.cf („Postfix“ konfigūracijos parametrai, daugiau informacijos rasite man 5 postconf).
  2. /etc/postfix/master.cf („Postfix“ pagrindinio demono konfigūracija, daugiau informacijos rasite man 5 master).

/etc/postfix/main.cf raskite (arba pridėkite, jei reikia) šias eilutes ir įsitikinkite, kad jos atitinka toliau nurodytas reikšmes:


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

Kiti trys nustatymai yra ypač svarbūs. Geltona spalva pažymėtuose failuose sukonfigūruosime „Postfix“ prieigą prie lentelių Domains_tbl, Users_tbl ir 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

Atminkite, kad aukščiau galite pasirinkti skirtingus failų pavadinimus, jei būtinai juos sukūrėte ir įterpiate toliau nurodytą turinį. Kiekvienu atveju pakeiskite YourPassword slaptažodžiu, kurį pasirinkote dba naudotojui 1 dalyje, arba taip pat galite naudoti MariaDB naudotojo ir slaptažodžio šakninius kredencialus.

Be to, įsitikinkite, kad naudojate lygiai tokius pačius el. pašto serverio duomenų bazės ir lentelių, sukurtų 1 dalyje, pavadinimus.

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

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

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

Galiausiai nepamirškite pakeisti šių failų leidimų į 640:


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

Ir naudotojo root ir grupės postfix nuosavybės teisė:


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

Toliau, norėdami įgalinti saugų ryšį, turime įsitikinti, kad /etc/postfix/master.cf yra nekomentuojami (arba, jei reikia, pridedami) šie nustatymai:


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

Pastaba: eilučių, prasidedančių -o parinktimi, įtrauka yra labai svarbi; kitu atveju postfix patikra grąžins klaidą:

Prieš išsaugodami pakeitimus, failo apačioje pridėkite šias eilutes:


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

Šiuo metu būtina patikrinti, ar „Postfix“ turi prieigą prie duomenų bazės lentelių ir domenų, paskyrų ir slapyvardžių, kuriuos sukūrėme 1 dalyje.

Norėdami tai padaryti, naudosime komandą postmap – įrankį, skirtą patikrinti ryšį su lentelėmis, kurias „Postfix“ ieškos veikimo metu, tačiau pirmiausia turėsime iš naujo paleisti „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

Žemiau esančiame paveikslėlyje matome, kad esamiems duomenų bazės įrašams grąžinamas 1. Priešingu atveju niekas nerodomas atgal į ekraną. Tikrindami slapyvardį, atkreipkite dėmesį, kad grąžinama tikroji el. pašto paskyra, kuriai slapyvardis susietas:

Atminkite, kad NE autentifikuojame pagal kiekvienos el. pašto paskyros kredencialus, tik tikriname „Postfix“ galimybę aptikti tuos įrašus duomenų bazėje.

Taigi, jei gaunate kitokią išvestį nei aukščiau, įsitikinkite, kad naudojate galiojančią vartotojo/slaptažodžio porą mariadb-vdomains.cf, mariadb-vusers.cf ir mariadb-valias.cf (arba kaip pasirinkote vadinti tuos failus).

Dovecot konfigūravimas

Kaip IMAP/POP3 serveris, „Dovecot“ suteikia galimybę vartotojams naudoti pašto naudotojo agentą (MUA arba taip pat žinomas kaip klientas), pvz., Thunderbird arba Outlook, kad būtų galima paminėti kelis pavyzdžius, kaip pasiekti jų paštą.

Norėdami pradėti, sukurkime vartotoją ir grupę el. laiškams tvarkyti (mums to reikės, nes mūsų el. pašto paskyros nėra susietos su sistemos vartotoju). Galite naudoti kitą UID ir GID (išskyrus 5000, kaip darome toliau), jei jis nenaudojamas ir yra didelis skaičius:


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

„Dovecot“ nustatymai yra suskirstyti į kelis konfigūracijos failus (įsitikinkite, kad šios eilutės nekomentuojamos ir (arba) redaguokite jas, kad jos atitiktų toliau nurodytus nustatymus.

/etc/dovecot/dovecot.conf:


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

/etc/dovecot/conf.d/10-auth.conf (įgalinkite tik autentifikavimą per SQL ir palikite komentarus apie kitus autentifikavimo metodus):


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

/etc/dovecot/conf.d/auth-sql.conf.ext (atminkite, kad el. laiškus saugosime kataloge, pavadintame yourdomain.com, esančiame / home/vmail, kurį turite sukurti, jei jo nėra. Mūsų atveju atlikome mkdir /home/vmail/linuxnewz.com, kad tvarkytume to domeno el. laiškus):


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

Pirmą kartą gavus el. laiškus tokioms paskyroms bus sukurtos atskiros vartotojų paskyrų pašto dėžutės.

/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

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

/etc/dovecot/conf.d/10-ssl.conf (pakeiskite sertifikatą ir raktų kelius, jei planuojate naudoti sertifikatą, pasirašytą CA):


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

Į /etc/dovecot/dovecot-sql.conf.ext įveskite savo duomenų bazės informaciją ir administruojančio vartotojo, sukurto 1 dalyje, kredencialus.

Svarbu: jei slaptažodyje yra žvaigždutė (#), turėsite pridėti prisijungimo eilutę, kaip nurodyta toliau pateiktame pavyzdyje:


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

Be to, galite sukonfigūruoti Dovecot registravimą, kad jis būtų atskirtas nuo Postfix adresu /etc/dovecot/conf.d/10-logging.conf:


log_path = /var/log/dovecot.log

Galiausiai įsitikinkite, kad „Dovecot“ žurnalas pasiekiamas naudotojui balandėlis:


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

Patikrinkite ir pataisykite Postifix konfigūraciją ir ugniasienėje įgalinkite SMTP, POP3 ir IMAP

Jei konfigūruodami „Postfix“ ir (arba) „Dovecot“ susidursite su problemomis, užuot pateikę visus konfigūracijos failus prašydami pagalbos, galite gauti konfigūracijos suvestinę (tik nekomentuotos eilutės) su:


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

Be to, įsitikinkite, kad el. pašto dėžutes gali skaityti tik vmail:


chown –R vmail:vmail /home/vmail

Konfigūracijos failus taip pat turėtų skaityti vmail ir dovecot naudotojai:


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

Galiausiai įsitikinkite, kad per užkardą įgalinote SMTP, POP3 ir 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

Konfigūruokite „Thunderbird“ kaip „Postfix“ el. pašto klientą

Pašto ryšiui naudojamų prievadų saugi prieiga per ugniasienę, laikas sukonfigūruoti el. pašto programą. Naudodami [el. paštas apsaugotas] ir atitinkamą slaptažodį bei mail.linuxnewz.com kaip IMAP (arba POP3) ir SMTP serverį, esame pasirengę pradėti siųsti ir gauti el. ir iš tokios sąskaitos:

Galite saugiai nepaisyti rodomo įspėjimo pranešimo, nes naudojate sertifikatą, kurio nepasirašė patikima trečiosios šalies CA:

Parašykime trumpą bandomąjį el. laišką ir spustelėkite Siųsti:

Kai būsite paraginti priimti išeinančio serverio savarankiškai pasirašytą sertifikatą, patvirtinkite jį anksčiau, kaip ir anksčiau:

Galiausiai eikite į paskirties el. laišką, kad sužinotumėte, ar gavote ką tik išsiųstą el. laišką. Jei taip, atsakykite į jį ir pažiūrėkite, ar jis grąžintas į šaltinio el. pašto dėžutę (kitaip žr. Postfix žurnalą adresu /var/log/maillog arba Dovecot žurnalą adresu /var /log/dovecot.log trikčių šalinimo informacijai):

Dabar turite veikiantį Postfix ir Dovecot el. pašto serverį ir galite pradėti siųsti bei gauti el.

Santrauka

Šiame straipsnyje paaiškinome, kaip sukonfigūruoti Postfix ir Dovecot, kad tvarkytų el. pašto srautą jūsų Linux serveryje. Jei kažkas neveikia, kaip nurodyta šiame straipsnyje, būtinai skirkite laiko ir patikrinkite Postfix ir Dovecot dokumentaciją.

Atminkite, kad nors „Postfix“ pašto serverio nustatymas nėra lengva užduotis, kiekvienam sistemos administratoriui tai yra naudinga patirtis.

Jei peržiūrėję dokumentus pastebėsite, kad vis dar susiduriate su Postfix ir (arba) Dovecot, nedvejodami parašykite mums naudodami toliau pateiktą komentarų formą ir mes mielai tai padarysime. padėti jums (nepamirškite į internetinę saugyklos paslaugą įkelti „Postfix“ ir „Dovecot“ konfigūracijos, gautos naudojant postconf ir doveconf, kaip aprašyta šiame straipsnyje).