Postfix - Dovecot und SquirrelMail unter Ubuntu als Mailserver
Inhaltsverzeichnis:
- Voraussetzungen
- Installieren Sie Postfix und Dovecot
- Postfix-Konfiguration
- Dovecot konfigurieren
- Fazit
Dies ist der zweite Beitrag in unserem Artikel Einrichten und Konfigurieren einer Mailserverserie. In diesem Beitrag zeigen wir Ihnen, wie Sie Postfix und Dovecot, die beiden Hauptkomponenten unseres Mail-Systems, installieren und konfigurieren.
Postfix ist ein Open Source Mail Transfer Agent (MTA), ein Dienst zum Senden und Empfangen von E-Mails. Dovecot ist ein IMAP / POP3-Server und übernimmt in unserem Setup auch die lokale Zustellung und Benutzerauthentifizierung.
Dieses Tutorial wurde für Ubuntu 16.04 geschrieben, jedoch sollten die gleichen Schritte mit kleinen Änderungen auf jeder neueren Version von Ubuntu funktionieren.
Voraussetzungen
Stellen Sie vor dem Fortfahren mit diesem Lernprogramm sicher, dass Sie als Benutzer mit sudo-Berechtigungen angemeldet sind.
Installieren Sie Postfix und Dovecot
Dovecot-Pakete in den Ubuntu-Standardrepositorys sind veraltet. Um das
imap_sieve
Modul nutzen zu können, installieren wir Dovecot aus dem Dovecot-Community-Repository.
Fügen Sie den Repository-GPG-Schlüssel mit dem folgenden Befehl wget zu Ihrem apt sources-Schlüsselbund hinzu:
wget -O- https://repo.dovecot.org/DOVECOT-REPO-GPG | sudo apt-key add -
Aktivieren Sie das Dovecot-Community-Repository mit dem folgenden Befehl:
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-Konfiguration
Wir werden Postfix so einrichten, dass es virtuelle Postfächer und Domänen verwendet.
Beginnen Sie mit der Erstellung der
sql
Konfigurationsdateien, die Postfix anweisen, wie auf die im ersten Teil dieser Serie erstellte MySQL-Datenbank
sql
werden soll.
sudo mkdir -p /etc/postfix/sql
Öffnen Sie Ihren Texteditor und erstellen Sie die folgenden Dateien:
/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'
Aktualisieren Sie nach dem Erstellen der SQL-Konfigurationsdateien die Haupt-Postfix-Konfigurationsdatei mit Informationen zu den virtuellen Domänen, Benutzern und Aliasnamen, die in der MySQL-Datenbank gespeichert sind.
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"
Der Befehl postconf zeigt die tatsächlichen Werte der Konfigurationsparameter an, ändert die Konfigurationsparameterwerte oder zeigt andere Konfigurationsinformationen zum Postfix-Mailsystem an.
Der lokale Zusteller übermittelt die eingehenden E-Mails an die Postfächer der Benutzer. Führen Sie den folgenden Befehl aus, um den LMTP-Dienst von Dovecot als Standardtransport für die E-Mail-Zustellung festzulegen:
sudo postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
Legen Sie die TL-Parameter mithilfe des zuvor generierten SSL-Zertifikats "Let's encrypt" fest:
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'
Konfigurieren Sie die authentifizierten SMTP-Einstellungen und übergeben Sie die Authentifizierung an 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'
Wir müssen auch die Postfix-Master-Konfigurationsdatei
master.cf
und den Submission-Port (
587
) und den Smtps-Port (
465
) aktivieren.
Öffnen Sie die Datei mit Ihrem Texteditor und kommentieren / bearbeiten Sie die folgenden Zeilen:
/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
Starten Sie den Postfix-Dienst neu, damit die Änderungen wirksam werden.
sudo systemctl restart postfix
Zu diesem Zeitpunkt haben Sie den Postfix-Dienst erfolgreich konfiguriert.
Dovecot konfigurieren
In diesem Abschnitt konfigurieren wir Dovecot so, dass es zu unserem Setup passt. Stellen Sie sicher, dass Sie die gelb markierten Zeilen bearbeiten.
Konfigurieren Sie zunächst die Datei
dovecot-sql.conf.ext
, die Dovecot anweist, wie auf die Datenbank
dovecot-sql.conf.ext
und wie Informationen zu E-Mail-Konten
dovecot-sql.conf.ext
werden.
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'
Vergessen Sie nicht, die korrekten MySQL-Anmeldeinformationen (Datenbankname, Benutzer und Kennwort) zu verwenden.
Bearbeiten
conf.d/10-mail.conf
Datei
conf.d/10-mail.conf
und die folgenden Variablen:
… 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…
Öffnen Sie die
conf.d/10-auth.conf
, bearbeiten Sie die folgenden Zeilen und
auth-sql.conf.ext
Datei
auth-sql.conf.ext
conf.d/10-auth.conf
, damit die Authentifizierung funktioniert:
… disable_plaintext_auth = yes… auth_mechanisms = plain login… #!include auth-system.conf.ext !include auth-sql.conf.ext…
Öffnen Sie die Datei
conf.d/10-master.conf
und ändern Sie sie wie folgt:
… 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 } }…
Öffnen Sie die
conf.d/10-ssl.conf
und aktivieren Sie 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.
Öffnen Sie die Datei
conf.d/20-imap.conf
und aktivieren Sie das Plugin
imap_quota
:
… protocol imap {… mail_plugins = $mail_plugins imap_quota… }…
Öffnen Sie die Datei
conf.d/20-lmtp.conf
und bearbeiten Sie sie wie folgt:
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins }…
Definieren Sie die Standardpostfächer in der Datei
conf.d/20-lmtp.conf
:
… mailbox Drafts { special_use = \Drafts } mailbox Spam { special_use = \Junk auto = subscribe } mailbox Junk { special_use = \Junk }…
Es gibt zwei verschiedene Arten von Kontingentengrößen, eine für die gesamte Domäne und die andere pro Benutzerpostfach. Im vorherigen Teil dieser Serie haben wir die Kontingentunterstützung bereits in PostfixAdmin aktiviert. Dies bedeutet, dass die Kontingentinformationen in der PostfixAdmin-Datenbank gespeichert werden.
Jetzt müssen wir Dovecot so konfigurieren, dass es eine Verbindung zur Datenbank herstellt, Kontingentlimits verarbeitet und ein Skript ausführt, das eine E-Mail an den Benutzer sendet, wenn das Kontingent des Benutzers ein bestimmtes Limit überschreitet. Öffnen Sie dazu die Datei
conf.d/90-quota.conf
und ändern Sie sie wie folgt:
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 }
Wir müssen dovecot auch mitteilen, wie auf das Quota-SQL-Wörterbuch zugegriffen werden soll. Öffnen Sie die Datei
dovecot-dict-sql.conf.ext
und bearbeiten Sie die folgenden Zeilen:
… 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 # } # }…
Stellen Sie sicher, dass Sie die richtigen MySQL-Anmeldeinformationen (Datenbankname, Benutzer und Kennwort) verwenden.
Erstellen Sie das folgende Shell-Skript, das dem Benutzer eine E-Mail sendet, wenn sein Kontingent ein bestimmtes Limit überschreitet:
/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
Führen Sie den folgenden Befehl aus, um das Skript ausführbar zu machen:
sudo chmod +x /usr/local/bin/quota-warning.sh
Starten Sie den dovecot-Dienst neu, damit die Änderungen wirksam werden.
sudo systemctl restart dovecot
Fazit
Inzwischen sollten Sie über ein voll funktionsfähiges Mailsystem verfügen. Im nächsten Teil dieser Serie zeigen wir Ihnen, wie Sie Rspamd installieren und integrieren.
Mailserver Postfix TaubenschlagDieser Beitrag ist Teil der Reihe Einrichten und Konfigurieren eines Mailservers.
Andere Beiträge in dieser Reihe:
• Richten Sie mit PostfixAdmin einen Mailserver ein. • Installieren und konfigurieren Sie Postfix und Dovecot. • Installieren und integrieren Sie Rspamd. • Installieren und konfigurieren Sie Roundcube WebmailSo installieren und konfigurieren Sie einen NFS-Server unter Centos 8
In diesem Lernprogramm werden die Schritte zum Einrichten eines NFSv4-Servers unter CentOS 8 beschrieben. Außerdem erfahren Sie, wie Sie ein NFS-Dateisystem auf dem Client bereitstellen.
So installieren und konfigurieren Sie einen NFS-Server unter Ubuntu 18.04
Network File System (NFS) ist ein verteiltes Dateisystemprotokoll, mit dem Sie Remoteverzeichnisse über ein Netzwerk freigeben können. In diesem Tutorial erfahren Sie, wie Sie einen NFSv4-Server unter Ubuntu 18.04 einrichten.
So installieren und konfigurieren Sie redis unter Ubuntu 18.04
Redis ist ein Open-Source-Speicher für In-Memory-Datenstrukturen. Es kann als Datenbank-, Cache- und Nachrichtenbroker verwendet werden und unterstützt verschiedene Datenstrukturen wie Strings, Hashes, Listen, Sets usw. Dieses Tutorial beschreibt die Installation und Konfiguration von Redis auf einem Ubuntu 18.04-Server.