CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS
Cuprins:
Aceasta este a doua postare a Setării noastre și configurarii unei serii de server de e-mail. În această postare vă vom arăta cum să instalați și să configurați Postfix și Dovecot, cele două componente principale ale sistemului nostru de poștă.
Postfix este un agent de transfer de poștă open-source (MTA), un serviciu utilizat pentru a trimite și primi e-mailuri. Dovecot este un server IMAP / POP3 și în configurarea noastră se va ocupa și de livrarea locală și autentificarea utilizatorului.
Acest tutorial a fost scris pentru Ubuntu 16.04, însă aceiași pași cu mici modificări ar trebui să funcționeze la orice versiune mai nouă a Ubuntu.
Cerințe preliminare
Înainte de a continua cu acest tutorial, asigurați-vă că sunteți autentificat ca utilizator cu privilegii sudo.
Instalați Postfix și Dovecot
Pachetele Dovecot din depozitele implicite Ubuntu sunt depășite. Pentru a profita de modulul
imap_sieve
vom instala Dovecot din depozitul comunității Dovecot.
Adăugați cheia GPG a depozitului la cheile de surse apt cu următoarea comandă wget:
wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
Activați depozitul comunității Dovecot folosind următoarea comandă:
echo "deb https://repo.dovecot.org/ce-2.3-latest/ubuntu/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/dovecot.list
sudo apt update
sudo debconf-set-selections <<< "postfix postfix/mailname string $(hostname -f)"
sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
sudo apt install postfix postfix-mysql dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-mysql
Configurare postfix
Vom configura Postfix pentru a utiliza căsuțe poștale virtuale și domenii.
Începeți prin a crea fișierele de configurare
sql
care vă vor instrui postfix cum să accesați baza de date MySQL, creată în prima parte a acestei serii.
sudo mkdir -p /etc/postfix/sql
Deschideți editorul de text și creați următoarele fișiere:
/etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT goto FROM alias, alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
user = postfixadmin password = P4ssvv0rD hosts = 127.0.0.1 dbname = postfixadmin query = SELECT maildir FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
După crearea fișierelor de configurare SQL, actualizați fișierul principal de configurare postfix pentru a include informații despre domeniile virtuale, utilizatori și alias-uri care sunt stocate în baza de date MySQL.
sudo postconf -e "virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf"
sudo postconf -e "virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf"
sudo postconf -e "virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf"
Comanda postconf afișează valorile reale ale parametrilor de configurare, modifică valorile parametrilor de configurare sau afișează alte informații de configurare despre sistemul de poștă Postfix.
Agentul de livrare local va livra e-mailurile primite în căsuțele poștale ale utilizatorilor. Rulați următoarea comandă pentru a seta serviciul LMTP al Dovecot ca transport implicit de livrare prin poștă:
sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
Setați parametrii TL folosind anterior Criptați certificatul SSL:
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_cert_file = /etc/letsencrypt/live/mail.linuxize.com/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file = /etc/letsencrypt/live/mail.linuxize.com/privkey.pem'
Configurați setările SMTP autentificate și transmiteți autentificarea către Dovecot:
sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
De asemenea, va trebui să edităm fișierul de configurare master Postfix
master.cf
și să activăm portul de trimitere (
587
) și portul smtps (
465
).
Deschideți fișierul cu editorul de text și decomentați / editați următoarele rânduri:
/etc/postfix/master.cf
submission inet n - y - - 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_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no -o smtpd_client_restrictions=permit_sasl_authenticated, reject # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated, reject -o milter_macro_daemon_name=ORIGINATING
Reporniți serviciul postfix pentru ca modificările să aibă efect.
sudo systemctl restart postfix
În acest moment, ați configurat cu succes serviciul Postfix.
Configurați Dovecot
În această secțiune vom configura Dovecot pentru a se potrivi cu configurarea noastră. Asigurați-vă că editați liniile evidențiate cu galben.
Începeți prin a configura fișierul
dovecot-sql.conf.ext
care vă instruiește Dovecot cum să accesați baza de date și cum să găsiți informațiile despre conturile de e-mail.
driver = mysql connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD default_pass_scheme = MD5-CRYPT iterate_query = SELECT username AS user FROM mailbox user_query = SELECT CONCAT('/var/mail/vmail/', maildir) AS home, \ CONCAT('maildir:/var/mail/vmail/', maildir) AS mail, \ 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule \ FROM mailbox WHERE username = '%u' AND active = 1 password_query = SELECT username AS user, password FROM mailbox \ WHERE username = '%u' AND active='1'
Nu uitați să utilizați datele de autentificare MySQL corecte (nume db, utilizator și parolă).
Apoi, editați
conf.d/10-mail.conf
și editați următoarele variabile:
… mail_location = maildir:/var/mail/vmail/%d/%n… mail_uid = vmail mail_gid = vmail… first_valid_uid = 5000 last_valid_uid = 5000… mail_privileged_group = vmail… mail_plugins = quota…
Pentru ca autentificarea să funcționeze, deschideți
conf.d/10-auth.conf
, editați următoarele linii și includeți fișierul
auth-sql.conf.ext
:
… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…
Deschideți
conf.d/10-master.conf
și modificați-l astfel:
… service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix }… }… service auth {… unix_listener auth-userdb { mode = 0600 user = vmail group = vmail }… unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }… }… service auth-worker { user = vmail }… service dict { unix_listener dict { mode = 0660 user = vmail group = vmail } }…
Deschideți
conf.d/10-ssl.conf
și activați SSL / TLS.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
… ssl = yes… ssl_cert = Make sure you use the correct path to the SSL certificate files.
If you have followed this series from the beginning, you should already have the
fullchain.pem
,
privkey.pem
,
dhparam.pem
files created on your server. For more information about how to create a free Let's encrypt SSL certificate and Diffie–Hellman key check this tutorial.
Thanks to Nevyn for noticing the problem and providing a solution.
Deschide
conf.d/20-imap.conf
și activează plugin-ul
imap_quota
:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
Deschideți
conf.d/20-lmtp.conf
și editați-l astfel:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
Definiți
conf.d/20-lmtp.conf
poștale implicite în
conf.d/20-lmtp.conf
:
… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…
Există două tipuri diferite de mărimi de cote, unul este setat pentru întregul domeniu, iar celălalt pentru căsuța poștală a utilizatorului. În partea anterioară a acestei serii am activat deja suportul pentru cote în PostfixAdmin, ceea ce înseamnă că informațiile despre cote vor fi stocate în baza de date PostfixAdmin.
Acum trebuie să configuram Dovecot pentru a ne conecta la baza de date, pentru a gestiona limitele de cote și pentru a rula un script care trimite un mail către utilizator atunci când cota utilizatorului depășește o limită specificată. Pentru aceasta, deschideți
conf.d/90-quota.conf
și modificați-l astfel:
plugin { quota = dict:User quota::proxy::sqlquota quota_rule = *:storage=5GB quota_rule2 = Trash:storage=+100M quota_grace = 10%% quota_exceeded_message = Quota exceeded, please contact your system administrator. quota_warning = storage=100%% quota-warning 100 %u quota_warning2 = storage=95%% quota-warning 95 %u quota_warning3 = storage=90%% quota-warning 90 %u quota_warning4 = storage=85%% quota-warning 85 %u } service quota-warning { executable = script /usr/local/bin/quota-warning.sh user = vmail unix_listener quota-warning { group = vmail mode = 0660 user = vmail } } dict { sqlquota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext }
De asemenea, trebuie să spunem dovecotului cum să accesați dicționarul SQL de cote. Deschideți
dovecot-dict-sql.conf.ext
și editați următoarele linii:
… connect = host=127.0.0.1 dbname=postfixadmin user=postfixadmin password=P4ssvv0rD… map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }… # map { # pattern = shared/expire/$user/$mailbox # table = expires # value_field = expire_stamp # # fields { # username = $user # mailbox = $mailbox # } # }…
Asigurați-vă că utilizați datele de autentificare MySQL corecte (nume db, utilizator și parolă).
Creați următorul script shell care va trimite un e-mail utilizatorului dacă cota sa depășește o limită specificată:
/usr/local/bin/quota-warning.sh
#!/bin/sh PERCENT=$1 USER=$2 cat << EOF | /usr/lib/dovecot/dovecot-lda -d $USER -o "plugin/quota=dict:User quota::noenforcing:proxy::sqlquota" From: [email protected] Subject: Quota warning Your mailbox is now $PERCENT% full. EOF
Faceți scriptul executabil rulând următoarea comandă
chmod
:
sudo chmod +x /usr/local/bin/quota-warning.sh
În cele din urmă, reporniți serviciul porumbeilor pentru ca modificările să aibă efect.
sudo systemctl restart dovecot
Concluzie
Până acum ar trebui să aveți un sistem de mail complet funcțional. În următoarea parte a acestei serii, vă vom arăta cum să instalați și să integrați Rspamd.
server de poștă postfix porumbelAceastă postare este o parte din Configurarea și configurarea unei serii de server de e-mail.
Alte postări din această serie:
• Configurați un server de poștă cu PostfixAdmin • Instalați și configurați Postfix și Dovecot • Instalați și integrați Rspamd • Instalați și configurați Webmailul RoundcubeConfigurați și configurați AVG Antivirus gratuit pentru activități suplimentare
AVG Antivirus Free for Windows 10 / 8.1 poate fi folosit pentru configurarea diferitelor sarcini și stați protejat la navigarea online sau prin e-mail.
Cum să configurați, instalați hp officejet 6500a plus o imprimantă all-in-one
Aflați cum puteți configura și instala imprimanta All-in-One HP Officejet 6500A Plus.
Instalați și configurați un mesaj web rotund cub
Roundcube este un client de e-mail IMAP bazat pe web, cu o interfață de utilizator foarte intuitivă și modernă, scrisă în PHP. Acest tutorial acoperă pașii necesari pentru instalarea și configurarea Roundcube Webmail.







