Postfixin ja Dovecotin määrittäminen virtuaalisen verkkotunnuksen käyttäjillä Linuxissa - Osa 2


Tämän sarjan edellisessä artikkelissa selitimme, kuinka sähköpostipalvelimen tietokanta määritetään ja hallitaan turvallisesti phpMyAdminin avulla.

Vaatimus:

  1. Asenna Postfix Mail Server ja Dovecot MariaDB:n kanssa – Osa 1

Nyt on aika määrittää sisäiset ohjelmat, jotka tekevät sähköpostien lähettämisestä ja vastaanottamisesta todellisuutta: Postfix ja Dovecot (vastaavasti lähtevien ja saapuvien sähköpostien käsittelemiseen).

Postfix-postipalvelimen määrittäminen

Ennen kuin aloitat Postfixin määrittämisen, kannattaa ja hyvä käydä katsomassa sen man-sivuja täällä, painottaen erityisesti osiota "Tietoja uusille Postfix-käyttäjille" . Jos teet niin, sinun on helpompi seurata tätä opetusohjelmaa.

Muutamalla sanalla, sinun pitäisi tietää, että Postfixille on kaksi määritystiedostoa:

  1. /etc/postfix/main.cf (Postfix-määritysparametrit, katso lisätietoja kohdasta man 5 postconf).
  2. /etc/postfix/master.cf (Postfix-päädaemonin kokoonpano, katso lisätietoja man 5 -masterista).

Etsi tiedostosta /etc/postfix/main.cf seuraavat rivit (tai lisää tarvittaessa) ja varmista, että ne vastaavat alla olevia arvoja:


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

Seuraavat kolme asetusta ovat erityisen tärkeitä. Keltaisella merkityissä tiedostoissa määritämme Postfixin pääsyn taulukoihin Domains_tbl, Users_tbl ja 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

Huomaa, että voit valita yllä erilaisia tiedostonimiä, kunhan luot ne ja lisäät niihin seuraavan sisällön. Korvaa kaikissa tapauksissa YourPassword salasanalla, jonka valitsit dba-käyttäjälle osassa 1, tai voit myös käyttää MariaDB:tä. käyttäjän ja salasanan pääkäyttäjätiedot alla.

Varmista myös, että käytät täsmälleen samoja nimiä sähköpostipalvelimen tietokannassa ja taulukoissa, jotka on luotu osassa 1.

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

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

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

Lopuksi, älä unohda muuttaa näiden tiedostojen käyttöoikeuksia 640:


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

Ja omistajuus käyttäjälle root ja ryhmälle 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

Seuraavaksi suojattujen yhteyksien mahdollistamiseksi meidän on varmistettava, että seuraavia asetuksia ei ole kommentoitu (tai lisätty tarvittaessa) tiedostoon /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

Huomaa: -o-vaihtoehdolla alkavien rivien sisennys on kriittinen. muuten postfix check palauttaa virheen:

Ennen kuin tallennat muutokset, lisää seuraavat rivit tiedoston alaosaan:


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

Tässä vaiheessa on tärkeää tarkistaa, onko Postfixillä pääsy tietokantataulukoihin ja verkkotunnuksiin, tileihin ja aliaksiin, jotka loimme osassa 1.

Käytämme tätä varten postmap-komentoa, apuohjelmaa, jolla testataan kommunikaatiota taulukoiden kanssa, joita Postfix etsii käytön aikana, mutta ennen kaikkea meidän on käynnistettävä postfix uudelleen:


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

Alla olevassa kuvassa voimme nähdä, että tietokannan olemassa oleville tietueille palautetaan 1. Muuten näytölle ei näytetä mitään. Huomaa aliaksen tarkistuksen yhteydessä, että varsinainen sähköpostitili, johon alias on yhdistetty, palautetaan:

Huomaa, että emme EI todenna kullekin sähköpostitilille asetettuja tunnistetietoja vastaan, vaan testaamme vain Postfixin kykyä havaita kyseiset tietueet tietokannasta.

Jos saat siis eri tulosteen kuin yllä, varmista, että käytät kelvollista käyttäjä/salasana-paria tiedostoissa mariadb-vdomains.cf, mariadb-vusers.cf ja mariadb-valias.cf (tai millä tahansa nimellä valitsit näiden tiedostojen nimeksi).

Dovecotin konfigurointi

IMAP/POP3-palvelimena Dovecot tarjoaa käyttäjille tavan Mail User Agentin (MUA tai tunnetaan myös nimellä asiakas), kuten Thunderbird tai Outlook, mainitakseni muutamia esimerkkejä sähköpostinsa käyttämisestä.

Aluksi luodaan käyttäjä ja ryhmä sähköpostien käsittelyä varten (tarvitsemme tätä, koska sähköpostitiliämme ei ole liitetty järjestelmän käyttäjään). Voit käyttää toista UID:tä ja GID:tä (muuta kuin 5000, kuten alla) niin kauan kuin se ei ole käytössä ja on suuri luku:


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

Dovecotin asetukset on jaettu useisiin asetustiedostoihin (varmista, että seuraavat rivit ovat kommentoimattomia ja/tai muokkaa niitä vastaamaan alla olevia asetuksia).

Kohdassa /etc/dovecot/dovecot.conf:


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

Kohdassa /etc/dovecot/conf.d/10-auth.conf (ota käyttöön vain todennus SQL:n kautta ja jätä muut todennusmenetelmät pois):


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

Kohdassa /etc/dovecot/conf.d/auth-sql.conf.ext (huomaa, että tallennamme sähköpostit hakemistoon nimeltä omaverkkotunnus.com, joka sijaitsee / home/vmail, joka sinun on luotava, jos sitä ei ole olemassa. Meidän tapauksessamme teimme mkdir /home/vmail/linuxnewz.com hallitaksemme sähköposteja kyseiselle verkkotunnukselle:


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

Käyttäjätilien yksittäiset postilaatikot luodaan, kun tällaisia tilejä koskevat sähköpostit vastaanotetaan ensimmäisen kerran.

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

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

Kohdassa /etc/dovecot/conf.d/10-ssl.conf (korvaa varmenne ja avainpolut, jos aiot käyttää CA:n allekirjoittamaa varmennetta):


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

Syötä kohtaan /etc/dovecot/dovecot-sql.conf.ext tietokantatietosi ja osassa 1 luodun järjestelmänvalvojan käyttäjätunnukset.

Tärkeää: jos salasanasi sisältää tähden (#), sinun on liitettävä liitäntämerkkijono alla olevan esimerkin mukaisesti:


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

Lisäksi voit määrittää Dovecotin kirjaamisen olemaan erillään Postfixista osoitteessa /etc/dovecot/conf.d/10-logging.conf:


log_path = /var/log/dovecot.log

Varmista lopuksi, että Dovecot-loki on käyttäjän kyyhkynen käytettävissä:


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

Tarkista ja korjaa Postifix-määritykset ja ota SMTP, POP3 ja IMAP käyttöön palomuurissa

Jos kohtaat ongelmia Postfixin ja/tai Dovecotin määrittämisessä, sen sijaan, että lähettäisit kaikki määritystiedostot pyytääksesi apua, voit saada kokoonpanoyhteenvedon (vain kommentoimattomat rivit), jossa on:


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

Varmista lisäksi, että sähköpostit ovat vain vmailin luettavissa:


chown –R vmail:vmail /home/vmail

Määritystiedostojen tulee olla myös vmailin ja dovecot-käyttäjien luettavissa:


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

Varmista lopuksi, että otat SMTP-, POP3- ja IMAP käyttöön palomuurin kautta:


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

Määritä Thunderbird sähköpostiohjelmaksi Postfixille

Kun sähköpostiviestinnässä käytettäviin portteihin on suojattu pääsy palomuurin kautta, on aika määrittää sähköpostiohjelma. Käyttämällä [sähköposti suojattu] ja sitä vastaava salasana sekä mail.linuxnewz.com IMAP- (tai POP3)- ja SMTP-palvelimena olemme valmiita aloittamaan sähköpostien lähettämisen ja vastaanottamisen ja sellaiselta tililtä:

Voit turvallisesti jättää huomioimatta näkyvän varoitusviestin, koska käytät varmennetta, jota ei ole allekirjoittanut luotettava kolmannen osapuolen CA:

Kirjoita lyhyt testisähköposti ja napsauta Lähetä:

Kun sinua kehotetaan hyväksymään lähtevän palvelimen itseallekirjoitettu varmenne, vahvista se aiemmin kuten ennen:

Siirry lopuksi kohdesähköpostiin ja katso, oletko saanut juuri lähetetyn sähköpostin. Jos on, vastaa siihen ja katso, onko se toimitettu takaisin lähdesähköpostilaatikkoon (muuten katso Postfix-loki osoitteessa /var/log/maillog tai Dovecot-loki osoitteessa /var /log/dovecot.log vianetsintätietoja varten):

Sinulla on nyt toimiva Postfix- ja Dovecot-sähköpostipalvelin ja voit alkaa lähettää ja vastaanottaa sähköposteja.

Yhteenveto

Tässä artikkelissa olemme selittäneet, kuinka Postfix ja Dovecot määritetään käsittelemään sähköpostiliikennettä Linux-palvelimessasi. Jos jokin ei toimi tässä artikkelissa kuvatulla tavalla, varmista, että käytät aikaa Postfix- ja Dovecot-dokumenttien tarkistamiseen.

Huomaa, että vaikka Postfix-sähköpostipalvelimen asentaminen ei ole helppoa, se on palkitseva kokemus jokaiselle järjestelmänvalvojalle.

Jos dokumenttien läpi käymisen jälkeen huomaat edelleen kamppailevasi Postfixin ja/tai Dovecotin kanssa, jätä meille viesti alla olevalla kommenttilomakkeella, niin autamme mielellämme auttaa sinua (älä unohda ladata online-tallennuspalveluun Postfix- ja Dovecot-määritykset, jotka on haettu komennoilla postconf ja doveconf, kuten tässä artikkelissa on kuvattu).