CentOS 8 - Postfix SMTP, Dovecot POP IMAP and SSL/TLS
Inhoudsopgave:
Dit is de tweede post van onze reeks e-mailserver instellen en configureren. In dit bericht laten we u zien hoe u Postfix en Dovecot, de twee belangrijkste componenten van ons e-mailsysteem, kunt installeren en configureren.
Postfix is een open-source mail transfer agent (MTA), een service die wordt gebruikt voor het verzenden en ontvangen van e-mails. Dovecot is een IMAP / POP3-server en in onze opstelling zal het ook lokale bezorging en gebruikersauthenticatie afhandelen.
Deze zelfstudie is geschreven voor Ubuntu 16.04, maar dezelfde stappen met kleine wijzigingen zouden op elke nieuwere versie van Ubuntu moeten werken.
voorwaarden
Zorg ervoor dat u bent aangemeld als een gebruiker met sudo-rechten voordat u doorgaat met deze zelfstudie.
Installeer Postfix en Dovecot
Duiventilpakketten in de standaardopslagplaatsen van Ubuntu zijn verouderd. Om gebruik te kunnen maken van de
imap_sieve
module zullen we Dovecot installeren vanuit de Dovecot community repository.
Voeg de GPG-sleutel van de repository toe aan de sleutelring van uw apt-bronnen met de volgende wget-opdracht:
wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
Schakel de Dovecot-communityrepository in met de volgende opdracht:
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
Postfix-configuratie
We zullen Postfix instellen om virtuele mailboxen en domeinen te gebruiken.
Begin met het maken van de
sql
configuratiebestanden die postfix instrueren hoe toegang te krijgen tot de MySQL-database, gemaakt in het eerste deel van deze serie.
sudo mkdir -p /etc/postfix/sql
Open uw teksteditor en maak de volgende bestanden:
/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'
Nadat de SQL-configuratiebestanden zijn gemaakt, werkt u het hoofdbestand van de postfix bij met informatie over de virtuele domeinen, gebruikers en aliassen die zijn opgeslagen in de MySQL-database.
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"
De opdracht postconf toont de werkelijke waarden van configuratieparameters, wijzigt configuratieparameterwaarden of geeft andere configuratie-informatie over het Postfix-mailsysteem weer.
De lokale bezorger bezorgt de inkomende e-mails in de mailboxen van de gebruikers. Voer de volgende opdracht uit om de LMTP-service van Dovecot in te stellen als standaardtransport voor e-mailbezorging:
sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
Stel de TL-parameters in met behulp van het eerder gegenereerde SSL-certificaat versleutelen:
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'
Configureer de geverifieerde SMTP-instellingen en geef authenticatie af aan 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'
We moeten ook het Postfix-masterconfiguratiebestand
master.cf
en de indieningspoort (
587
) en smtps-poort (
465
) inschakelen.
Open het bestand met uw teksteditor en uncomment / bewerk de volgende regels:
/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
Start de postfix-service opnieuw om de wijzigingen door te voeren.
sudo systemctl restart postfix
Op dit moment hebt u de Postfix-service met succes geconfigureerd.
Configureer Dovecot
In deze sectie zullen we Dovecot configureren om overeen te komen met onze instellingen. Zorg ervoor dat u de lijnen bewerkt die geel zijn gemarkeerd.
Begin met het configureren van het bestand
dovecot-sql.conf.ext
dat Dovecot instrueert hoe toegang te krijgen tot de database en hoe informatie te vinden over e-mailaccounts.
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'
Vergeet niet de juiste MySQL-gegevens (dbnaam, gebruiker en wachtwoord) te gebruiken.
Bewerk vervolgens het bestand
conf.d/10-mail.conf
en bewerk de volgende variabelen:
… 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…
Om de authenticatie te laten werken, opent u
conf.d/10-auth.conf
, bewerkt u de volgende regels en
auth-sql.conf.ext
bestand
auth-sql.conf.ext
:
… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…
Open het bestand
conf.d/10-master.conf
en wijzig het als volgt:
… 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 } }…
Open
conf.d/10-ssl.conf
en schakel SSL / TLS in.
… 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.
Open het bestand
conf.d/20-imap.conf
en activeer de plug-in
imap_quota
:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
Open het bestand
conf.d/20-lmtp.conf
en bewerk het als volgt:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
Definieer de standaardpostvakken in het bestand
conf.d/20-lmtp.conf
:
… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…
Er zijn twee verschillende soorten quotagroottes, één is ingesteld voor het hele domein en de andere per gebruikerspostvak. In het vorige deel van deze serie hebben we de quota-ondersteuning in PostfixAdmin al ingeschakeld, wat betekent dat de quota-informatie wordt opgeslagen in de PostfixAdmin-database.
Nu moeten we Dovecot configureren om verbinding te maken met de database, quotalimieten verwerken en een script uitvoeren dat een e-mail naar de gebruiker verzendt wanneer het quotum van de gebruiker een opgegeven limiet overschrijdt. Open hiervoor het bestand
conf.d/90-quota.conf
en wijzig het als volgt:
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 }
We moeten ook duiventil vertellen hoe toegang te krijgen tot het quota SQL-woordenboek. Open het bestand
dovecot-dict-sql.conf.ext
en bewerk de volgende regels:
… 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 # } # }…
Zorg ervoor dat u de juiste MySQL-inloggegevens gebruikt (dbnaam, gebruiker en wachtwoord).
Maak het volgende shellscript dat een e-mail naar de gebruiker stuurt als het quotum een opgegeven limiet overschrijdt:
/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
Maak het script uitvoerbaar door de volgende
chmod
opdracht uit te voeren:
sudo chmod +x /usr/local/bin/quota-warning.sh
Start ten slotte de dovecot-service opnieuw om de wijzigingen door te voeren.
sudo systemctl restart dovecot
Conclusie
U zou nu een volledig functioneel e-mailsysteem moeten hebben. In het volgende deel van deze serie laten we u zien hoe u Rspamd installeert en integreert.
mailserver postfix duiventilDit bericht maakt deel uit van de reeks Een mailserver instellen en configureren.
Andere berichten in deze serie:
• Stel een mailserver in met PostfixAdmin • Installeer en configureer Postfix en Dovecot • Installeer en integreer Rspamd • Installeer en configureer Roundcube WebmailHoe een NFS-server op Centos 8 te installeren en configureren
In deze zelfstudie doorloopt u de benodigde stappen om een NFSv4-server op CentOS 8 in te stellen. We laten u ook zien hoe u een NFS-bestandssysteem op de client kunt mounten.
Hoe een nfs-server op ubuntu 18.04 te installeren en configureren
Network File System (NFS) is een gedistribueerd bestandssysteemprotocol waarmee u externe mappen via een netwerk kunt delen. In deze zelfstudie bespreken we hoe u een NFSv4-server instelt op Ubuntu 18.04.
Redis installeren en configureren op Centos 7
Redis is een open-source in-memory gegevensstructuuropslag. Het kan worden gebruikt als een database, cache en berichtenmakelaar en ondersteunt verschillende datastructuren zoals Strings, Hashes, Lists, Sets etc.







