CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS
Innehållsförteckning:
Detta är det andra inlägget i vår Inställning och konfigurering av en postserverserie. I det här inlägget kommer vi att visa dig hur du installerar och konfigurerar Postfix och Dovecot, de två huvudkomponenterna i vårt postsystem.
Postfix är en öppen källkodsöverföringsagent (MTA), en tjänst som används för att skicka och ta emot e-postmeddelanden. Dovecot är en IMAP / POP3-server och i vår installation kommer den också att hantera lokal leverans och användarautentisering.
Denna handledning har skrivits för Ubuntu 16.04, men samma steg med små modifieringar bör fungera på alla nyare versioner av Ubuntu.
förutsättningar
Innan du fortsätter med den här tutorialen, se till att du är inloggad som användare med sudo-privilegier.
Installera Postfix och Dovecot
Dovecot-paket i Ubuntu standardförvar är föråldrade. För att dra nytta av
imap_sieve
modulen kommer vi att installera Dovecot från Dovecot community-förvaret.
Lägg till förvaret GPG-nyckeln till din apt källkodsnyckling med följande wget-kommando:
wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
Aktivera Dovecot-gemenskapsförvaret med följande kommando:
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
Postfixkonfiguration
Vi kommer att installera Postfix för att använda virtuella postlådor och domäner.
Börja med att skapa
sql
konfigurationsfiler som kommer att instruera postfix hur du får åtkomst till MySQL-databasen, skapad i den första delen av denna serie.
sudo mkdir -p /etc/postfix/sql
Öppna din textredigerare och skapa följande filer:
/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'
När SQL-konfigurationsfilerna har skapats, uppdaterar du den huvudsakliga konfigurationsfilen för postfix så att den innehåller information om virtuella domäner, användare och alias som lagras i MySQL-databasen.
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"
Postconf-kommandot visar de faktiska värdena för konfigurationsparametrar, ändrar konfigurationsparametervärden eller visar annan konfigurationsinformation om Postfix-postsystemet.
Den lokala leveransagenten kommer att leverera inkommande e-postmeddelanden till användarnas postlådor. Kör följande kommando för att ställa Dovecots LMTP-tjänst som en postleveranstransport:
sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
Ställ in TL-parametrarna med det tidigare genererade Let's Encrypt SSL-certifikatet:
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_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'
Konfigurera de autentiserade SMTP-inställningarna och dela ut autentisering till 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 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
Vi måste också redigera Postfix-huvudkonfigurationsfilen
master.cf
och aktivera inlämningsporten (
587
) och smtps-porten (
465
).
Öppna filen med din textredigerare och avmarkera / redigera följande rader:
/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
Starta om postfix-tjänsten så att ändringar träder i kraft.
sudo systemctl restart postfix
Vid denna punkt har du framgångsrikt konfigurerat Postfix-tjänsten.
Konfigurera Dovecot
I det här avsnittet konfigurerar vi Dovecot för att matcha vår installation. Se till att du redigerar raderna markerade med gult.
Börja med att konfigurera filen
dovecot-sql.conf.ext
som instruerar Dovecot hur man kommer åt databasen och hur man hittar informationen om e-postkonton.
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'
Glöm inte att använda rätt MySQL-referenser (dbnamn, användare och lösenord).
conf.d/10-mail.conf
filen
conf.d/10-mail.conf
och redigera följande variabler:
… 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…
För att få autentiseringen att fungera, öppnar du
conf.d/10-auth.conf
, redigerar följande rader och inkluderar
auth-sql.conf.ext
filen
auth-sql.conf.ext
filen
auth-sql.conf.ext
:
… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…
Öppna
conf.d/10-master.conf
och ändra den på följande sätt:
… 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 } }…
Öppna
conf.d/10-ssl.conf
och aktivera 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.
Öppna
conf.d/20-imap.conf
och aktivera
imap_quota
plugin:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
Öppna
conf.d/20-lmtp.conf
och redigera den på följande sätt:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
Definiera standardbrevlådorna i
conf.d/20-lmtp.conf
:
… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…
Det finns två olika typer av kvotstorlekar, en är inställd för hela domänen och den andra per användarbrevlåda. I den föregående delen av denna serie har vi redan aktiverat kvotstödet i PostfixAdmin vilket innebär att kvotinformationen kommer att lagras i PostfixAdmin-databasen.
Nu måste vi konfigurera Dovecot för att ansluta till databasen, för att hantera kvotgränser och för att köra ett skript som skickar ett e-postmeddelande till användaren när användarens kvot överskrider en angiven gräns. För att göra det öppnar du
conf.d/90-quota.conf
och ändrar den på följande sätt:
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 }
Vi måste också berätta för dovecot hur man får åtkomst till SQL-ordboken för kvoter. Öppna
dovecot-dict-sql.conf.ext
och redigera följande rader:
… 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 # } # }…
Se till att du använder rätt MySQL-referenser (dbnamn, användare och lösenord).
Skapa följande skalskript som skickar ett e-postmeddelande till användaren om dess kvot överskrider en angiven gräns:
/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
Gör skriptet körbart genom att köra följande
chmod
kommando:
sudo chmod +x /usr/local/bin/quota-warning.sh
Starta slutligen om dovecot-tjänsten för att ändringarna ska träda i kraft.
sudo systemctl restart dovecot
Slutsats
Nu bör du ha ett fullt fungerande postsystem. I nästa del av denna serie visar vi dig hur du installerar och integrerar Rspamd.
postserver postfix dovecotDet här inlägget är en del av Konfigurera och konfigurera en postserverserie.
Andra inlägg i denna serie:
• Ställ in en postserver med PostfixAdmin • Installera och konfigurera Postfix och Dovecot • Installera och integrera Rspamd • Installera och konfigurera Roundcube WebmailKonfigurera och konfigurera AVG Antivirus Free för ytterligare uppgifter
AVG Antivirus Free för Windows 10 / 8.1 kan användas för att konfigurera olika ytterligare uppgifter och
Konfigurera och konfigurera Exchange ActiveSync på Windows Phone 7
Denna handledning beskriver hur du konfigurerar Exchange ActiveSync på din Windows Phone 7-enhet, Använda mitt Office 365-konto för ett exempel.
Konfigurera och konfigurera Outlook för att fungera med ett indiskt språk e-postkonto
Lär dig hur du konfigurerar och konfigurerar Outlook så att det arbetar med indiska språk. Stegen innebär att du konfigurerar ditt e-postkonto med den vanliga IMAP-konfigurationen.







