Postfix ist ein kostenloser E-Mail-Server, der ursprünglich als einfachere und sicherere Alternative zu sendmail entwickelt wurde. Dieses Tutorial zeigt Ihnen, wie Sie einen Postfix-Mailserver auf Ihrem Ubuntu 18.04-Server einrichten. Mit Postfix können Sie virtuelle Benutzer verwalten und dafür erstellen wir eine virtuelle Gruppe. Wir verwalten unseren Mailserver einfach mit postfixadmin für die virtuellen Benutzer und dovecot für eingehende E-Mails.
Was Sie verstehen müssen
Voraussetzung für den Mailempfang ist eine feste IP, ein DNS-Server, der entweder auf dem eigenen Server läuft oder bei einem Hosting-Provider, auf dem man die Aufzeichnungen modifizieren kann. Lassen Sie uns einige Akronyme definieren, die in dieser Konfiguration verwendet werden:
- Postfix ist der Mail Transfer Agent (MTA ) zum Senden und Empfangen von E-Mails
- Taubenschlag ist der Local Delivery Agent (LDA ), die den Internet Messaging Application Protocol (IMAP)- und den Post Office Protocol (POP3)-Server verwenden.
- SASL definiert durch Simple Authentication und Secure Layer, fügt es eine Authentifizierung zwischen dem Benutzer und dem Server hinzu, um den Austausch zu sichern.
- Postfixadmin die Webschnittstelle, mit der Sie Postfächer, virtuelle Domains und Aliase verwalten können
- LEMP: den Webserver mit Nginx und PHP um auf postfixadmin zuzugreifen und die virtuellen Benutzer und Domänen einfach zu verwalten, MySQL um alle Informationen zu speichern.
Es gibt zwei Arten von Domains in Postfix:
- Lokale Domänen Wird verwendet, um E-Mails an Systembenutzer zuzustellen, die in
/etc/passwd
aufgeführt sind Datei. - Virtuelle Domains die kein Systemkonto in
/etc/passwd
benötigen Datei. Es bietet eine Möglichkeit, Tausende von E-Mail-Konten sehr einfach im Mailserversystem zu verwalten, indem MySQL, PostgreSQL oder LDAP für die Benutzerkontenverwaltung verwendet werden.
Schritt 1) Postfixadmin installieren und konfigurieren
Postfixadmin ist ein Webmodul, mit dem Sie virtuelle Domains und Benutzer in einer Datenbank einfach manipulieren können.
a) postfixadmin herunterladen
Zuerst werden wir die erforderlichen Pakete installieren
# apt install php-imap php-mbstring php7.2-imap php7.2-mbstring
Reading package lists... Done
Building dependency tree
Reading state information... Done
...
...
Normalerweise ist postfixadmin in den Standard-Repositories von Ubuntu 18.04 vorhanden, aber es wird versuchen, Apache und PostgreSQL anstelle von Nginx und MySql zu installieren. Um also unsere Konfiguration beizubehalten, werden wir die aktuellste Version 3.2 herunterladen aus dem Quellcode des Github-Site-Projekts und speichern Sie sie unter /opt
Ordner
# wget -P /opt https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.2.tar.gz
--2018-06-11 21:53:14-- https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.2.tar.gz
Resolving github.com (github.com)... 192.30.255.113, 192.30.255.112
Connecting to github.com (github.com)|192.30.255.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Gehen Sie nun zu diesem Ordner und dekomprimieren Sie ihn.
# cd /opt && tar xvf postfixadmin-3.2.tar.gz
Jetzt sollten wir es umbenennen
# mv postfixadmin-postfixadmin-3.2/ postfixadmin
Postfixadmin verwendet ein Skript namens setup.php
die wir während der Installation über den Webserver verwenden werden. In der vorherigen Version von Postfix (3.1 und älteste) befindet sich dieses Skript direkt im Postfixadmin-Root-Ordner, aber in der aktuellen Version (3.2) ist es im Unterverzeichnis public
enthalten des Postfixadmin-Ordners. Normalerweise sollten wir postfixadmin in den Stammordner unseres Nginx-Webservers verschieben, aber mit dieser neuen Version werden wir nur einen symbolischen Link des öffentlichen Ordners erstellen, der das Skript enthält, und ihn dann aus Sicherheitsgründen umbenennen
# ln -s /opt/postfixadmin/public/ /var/www/html/pfa
root@li1002-235:~# ls -l /var/www/html/
total 4
-rw-r--r-- 1 root root 612 Jun 10 04:51 index.nginx-debian.html
lrwxrwxrwx 1 root root 25 Jun 12 04:01 pfa -> /opt/postfixadmin/public/
b) Erstellen Sie die Postfix-Datenbank
Jetzt sollten wir uns für einige Konfigurationen mit der MySQL-Datenbank verbinden
# mysql -u root -p
Enter password:
Erstellen Sie dann die Datenbank und den Benutzer
mysql> CREATE DATABASE postfix;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'postfix-db-password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
c) postfixadmin konfigurieren
Nachdem wir die Datenbank konfiguriert haben, sollten wir sie postfixadmin mitteilen, damit sie weiß, wo sie die Informationen erhalten kann. Erstellen Sie dazu die /opt/postfixadmin/config.local.php
Datei und fügen Sie den Inhalt unten hinzu
# vim /opt/postfixadmin/config.local.php
<?php
$CONF['database_type'] = 'mysqli';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfix-db-password';
$CONF['database_name'] = 'postfix';
$CONF['configured'] = true;
?>
postfixadmin benötigt die Berechtigung für einen Unterordner namens templates_c
das gibt es nicht. Um einige Fehler während der Installation wie unten zu vermeiden,
Wir sollten es manuell erstellen und www-data
angeben müssen Besitz mit dem Befehl chown.
# mkdir /opt/postfixadmin/templates_c && chmod 755 -R /opt/postfixadmin/templates_c
# chown -R www-data:www-data /opt/postfixadmin/templates_c
Versuchen Sie es dann erneut, Sie werden sehen, dass es jetzt funktioniert und die gesamte Konfiguration überprüft, die Version Ihrer PHP- und Ubuntu-Version anzeigt
Jetzt sollten wir ein Passwort für das Setup erstellen und dessen Hash erzeugen
Jetzt können Sie das Superadmin-Konto erstellen und das Setup-Passwort verwenden die du erstellt hast. Aber dafür müssen Sie die /opt/postfixadmin/config.local.php
bearbeiten Datei, um den Wert des generierten Passwort-Hash hinzuzufügen. Fahren Sie dann mit der Erstellung des Superadmin-Kontos fort
Jetzt sehen Sie, dass das Konto hinzugefügt wurde.
Wie Sie nun sehen können, können Sie sich mit dem Konto bei postfixadmin anmelden, indem Sie den Link http://your-ip-or-domain/pfa
verwendenWenn diese Seite nicht angezeigt werden kann, überprüfen Sie bitte die nginx-Fehlerprotokolldatei
# tail -n 20 -f /var/log/nginx/error.log
Und stellen Sie sicher, dass Sie die richtigen Berechtigungen für /opt/postfixadmin/templates_c
haben Mappe. Sie können die Beschreibung jedes Menüs sehen, wenn Sie sich anmelden.
d) Erstellen Sie virtuelle Domains, Benutzer und Alias
Jetzt erstellen wir die virtuellen Domänen und dann die Benutzer. Eine Domain ist ein Domainname wie mytuto.com . Sie können E-Mails auf Ihrer Domain haben, die denselben Server verwenden. Wenn Sie anfangen, haben Sie noch keine Domain. Um eine Domain hinzuzufügen, gehen Sie zu Domainliste -> Neue Domain .
Geben Sie dann die Informationen zur Domäne ein. Sie können die Anzahl der Aliase und Postfächer begrenzen. Denken Sie daran, den MX-Eintrag hinzuzufügen. Wenn Sie mit der Auswahl Ihrer Werte fertig sind, fügen Sie die Domain hinzu.
Dass unsere virtuelle Domain nun erstellt ist, können Sie in der Domainliste
sehenWir können jetzt unsere virtuellen Benutzer erstellen. Gehen Sie dazu auf Virtuelle Liste -> Postfach hinzufügen .
Wir können auch Aliase erstellen. Dies sind E-Mail-Adressen, die die E-Mails an ein anderes Konto umleiten. Normalerweise muss jeder Mailserver eine E-Mail-Adresse missbrauchen , damit wir beispielsweise einen Spam von einer Domain melden können. Erstellen Sie also einfach einen Alias-Missbrauch von Ihrer Domain zu Ihrem Benutzer, den Sie gerade zuvor erstellt haben. Gehen Sie dazu zu Virtuelle Liste -> Alias hinzufügen .
Sie können all diese virtuellen Parameter am Ende erstellen, aber es wird uns im nächsten Schritt für die Konfiguration von Postfix helfen.
Schritt 2) Postfix installieren und konfigurieren
a) Postfix installieren
Jetzt können wir die Postfix-Pakete installieren.
# apt install postfix postfix-mysql sasl2-bin
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
db-util db5.3-util libmysqlclient20 ssl-cert
Suggested packages:
procmail postfix-pgsql postfix-ldap postfix-pcre postfix-lmdb
...
...
Sie müssen zwei Fragen über die Art der Mail und den Namen Ihres Mailservers beantworten. Achten Sie darauf, den Hostnamen zu ersetzen und Domäne Werte mit Ihren
- die Art der E-Mail-Konfiguration:Internet-Site
- der System-E-Mail-Name:hostname.domain.com
Stellen Sie sicher, dass sasl beim Start ausgeführt wird, indem Sie seine Konfigurationsdatei bearbeiten
# vim /etc/default/saslauthd
# Should saslauthd run automatically on startup? (default: no)
START=yes
Starten Sie nun den Dienst neu
# systemctl restart saslauthd
Da wir einen Mailserver mit virtuellen Benutzern konfigurieren, benötigen wir einen Besitzer aller Postfächer, also erstellen wir einen Systembenutzer, der von allen virtuellen Benutzern verwendet wird, um auf E-Mails auf dem Server zuzugreifen. Erstellen Sie zuerst den Gruppeneigentümer und den Ordner, in dem die Postfächer gespeichert werden.
# groupadd -g 5000 vmail && mkdir -p /var/mail/vmail
Erstellen Sie nun den Eigentümer
# useradd -u 5000 vmail -g vmail -s /usr/sbin/nologin -d /var/mail/vmail
Stellen Sie sicher, dass Sie dem Besitzer des Mailverzeichnisses die Erlaubnis geben, damit er die Mails in den entsprechenden Verzeichnissen speichern kann.
# chown -R vmail:vmail /var/mail/vmail
Andernfalls kann dovecot die erforderlichen Ordner zum Speichern der E-Mails nicht erstellen.
b) Erstellen Sie die Konfigurationsdateien für die Datenbank
Erstellen Sie nun einen Ordner, der einige Datenbankdateien enthalten wird
# mkdir -p /etc/postfix/sql
Postfix benötigt 03 Datenbankdateien, die es ihm ermöglichen, auf die Datenbank zuzugreifen, die wir zuvor erstellt haben:
- Domänen um die Liste der auf dem Server gehosteten Domänennamen zu enthalten. Dadurch kann Postfix feststellen, ob unser Server für eine Domain (mytuto.com) zuständig ist wenn es eine E-Mail ([email protected]) erhält darauf. Wenn dies der Fall ist, bedeutet dies, dass sich die Domain in unserer Datenbank befindet.
# vim /etc/postfix/sql/mysql_virtual_domains_maps.cf
user = postfix
password = postfix-db-password
hosts = 127.0.0.1
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
Wir aktivieren die Konfiguration und fügen sie automatisch zur /etc/postfix/main.cf
hinzu Datei und laden Sie die Postfix-Konfiguration neu, um dies nicht manuell tun zu müssen. Die Datei wird also jedes Mal aktualisiert, wenn Sie diesen Befehl mit neuen Werten verwenden.
# postconf -e virtual_mailbox_domains=mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
Jetzt können wir die Konfiguration überprüfen. Wir führen einen Befehl aus, der die in der Datei enthaltene Abfrage ausführt, um in unserer Datenbank nach einer Domain zu suchen. Ein Element (die gesuchte Domäne) muss zurückgegeben werden oder nichts, wenn die Domäne nicht vorhanden ist.
# postmap -q mytuto.com mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
mytuto.com
Wie Sie sehen können, ist Postfix in der Lage, die in unserer Datenbank gespeicherten Domains abzurufen
- Postfach um alle virtuellen E-Mail-Adressen zu speichern. Es wird auch verwendet, um zu überprüfen, ob die Postfächer existieren
# vim /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix-db-password
hosts = 127.0.0.1
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
Jetzt aktualisieren wir die Konfigurationsdatei
# postconf -e virtual_mailbox_maps=mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
Führen Sie den Befehl aus, um die Abfrage in der Datenbank zu testen
# postmap -q [email protected] mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf
mytuto.com/alain/
- Alias um die verschiedenen E-Mail-Aliase zu enthalten.
# vim /etc/postfix/sql/mysql_virtual_alias_maps.cf
user = postfix
password = postfix-db-password
hosts = 127.0.0.1
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Fügen Sie nun die Konfiguration hinzu
# postconf -e virtual_alias_maps=mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf
Führen Sie nun den Befehl aus, um die Abfrage zu testen. Es ist der Zielbenutzer ([email protected]) die angezeigt werden sollte und nicht die Missbrauchsadresse. Es zeigt, dass Postfix den Abgleich durchführen kann.
# postmap -q [email protected] mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf
[email protected]
Stellen Sie sicher, dass diese Dateien für normale Benutzer nicht lesbar sind, da die Passwörter unverschlüsselt gespeichert werden.
# ls -l /etc/postfix/sql/
total 12
-rw-r--r-- 1 root root 138 Jun 13 06:53 mysql_virtual_alias_maps.cf
-rw-r--r-- 1 root root 140 Jun 13 05:18 mysql_virtual_domains_maps.cf
-rw-r--r-- 1 root root 144 Jun 13 07:04 mysql_virtual_mailbox_maps.cf
Damit Postfix diese Datei lesen kann, können wir den Gruppeneigentümer in Postfix ändern
# chgrp postfix /etc/postfix/sql/mysql_*.cf
# ls -l /etc/postfix/sql/
total 12
-rw-r--r-- 1 root postfix 138 Jun 13 06:53 mysql_virtual_alias_maps.cf
-rw-r--r-- 1 root postfix 140 Jun 13 05:18 mysql_virtual_domains_maps.cf
-rw-r--r-- 1 root postfix 144 Jun 13 07:04 mysql_virtual_mailbox_maps.cf
c) Postfix konfigurieren
Jetzt werden wir die Postfix-Hauptkonfigurationsdatei manuell bearbeiten. Erstellen Sie also eine Kopie, bevor Sie sie bearbeiten
# cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
Jetzt aktivieren wir SASL, um die Authentifizierung für das Senden von E-Mails zu erzwingen und die Authentifizierung an Dovecot weiterzugeben. Achten Sie darauf, unten Zeilen hinzuzufügen
# vim /etc/postfix/main.cf
# Allow authenticated users to send email, and use Dovecot to authenticate them. Tells Postfix to use Dovecot for authentication
smtpd_sasl_type = dovecot
## Path to the Postfix auth socket
smtpd_sasl_path = private/auth
## Tells Postfix to let people send email if they've authenticated to the server.
## Otherwise they can only send if they're logged in (SSH)
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
# Enable authentication only for those with a TLS connection.
smtpd_tls_security_level = may
smtpd_tls_auth_only = no
# Tells Postfix who can send email: SASL-authenticated users connecting from a network specified in 'mynetworks'
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
Bearbeiten wir nun die /etc/postfix/master.cf
Konfigurationsdatei. Es ist die Prozesskonfigurationsdatei. Wir werden sichere SMTP-Ports aktivieren, indem wir die Zeilen unten hinzufügen oder auskommentieren und vorher eine Kopie erstellen
# cp /etc/postfix/master.cf /etc/postfix/master.cf.bak
# vim /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_tls_auth_only=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
-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=$mua_client_restrictions
# -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 smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Jetzt können Sie postconf -n
ausführen Befehl, um einige Fehler zu überprüfen
# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
...
...
Wenn Sie keine Warnmeldungen erhalten, bedeutet dies, dass Ihre Dateien keine Fehler enthalten. Jetzt können Sie den Postfix-Dienst neu starten
# systemctl restart postfix
# systemctl status postfix
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled)
Active: active (exited) since Wed 2018-06-13 10:16:02 UTC; 27s ago
Process: 12225 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 12225 (code=exited, status=0/SUCCESS)
Schritt 3) Dovecot installieren und konfigurieren
Nachdem Postfix installiert und konfiguriert ist, müssen wir Postfix installieren, um die Pop- und Imap-Protokolle zu verwalten, mit denen wir unsere E-Mails wiederherstellen können.
a) Installation von Dovecot
Dovecot-Pakete sind in den Standard-Repositorys von Ubuntu 18.04 vorhanden. Wir werden es mit der mysql-Unterstützung installieren. Wir werden Sieb installieren was nützlich ist, weil es die Mails automatisch in die entsprechenden Ordner legt. Das bedeutet, dass für jede Domain ein entsprechender Ordner erstellt wird, der den entsprechenden Ordner eines virtuellen Benutzers zum Speichern seiner E-Mail-Dateien enthält.
# apt install dovecot-imapd dovecot-mysql dovecot-managesieved
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
dovecot-core dovecot-sieve libexttextcat-2.0-0 libexttextcat-data
Suggested packages:
...
...
Verstehen Sie das, wenn Sie kein Sieb verwenden möchten , für jede Domain müssen Sie wahrscheinlich die entsprechenden Ordner manuell erstellen, um ihre E-Mails zu speichern, und dies ist nicht einfach, wenn Sie viele Domains haben.
b) Konfiguration des Taubenschlags
Die Konfiguration von Dovecot ist in mehreren Dateien in /etc/dovecot/conf.d
enthalten . Überprüfen Sie zuerst den Inhalt der /etc/dovecot/dovecot.conf
um diese Zeilen unkommentiert zu haben
!include_try /usr/share/dovecot/protocols.d/*.protocol
!include conf.d/*.conf
Wechseln Sie nun in den Ordner mit den Konfigurationsdateien
# cd /etc/dovecot/conf.d
Wir werden bearbeiten:
- die
10-auth.conf
-Datei, um die Verbindungsmechanismen zu ändern, indem Sie die Zeilen hinzufügen oder auskommentieren. Dovecot verwendet standardmäßig die Systembenutzer, aber wir verwenden Mysql-Benutzer
# cp 10-auth.conf 10-auth.conf.bak
# vim 10-auth.conf
auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext
- die
auth-sql.conf.ext
Datei für die SQL-Konfiguration
# cp auth-sql.conf.ext auth-sql.conf.ext.bak
# vim auth-sql.conf.ext
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vmail/%d/%n
}
- Lassen Sie uns nun die
/etc/dovecot/dovecot-sql.conf.ext
bearbeiten um dovecot mitzuteilen, wie es sich mit der SQL-Datenbank verbinden soll
# cp /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.bak
# vim /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=postfix-db-password
password_query = SELECT username,domain,password FROM mailbox WHERE username='%u';
default_pass_scheme = MD5-CRYPT
- Jetzt bearbeiten wir die
10-mail.conf
Datei zum Konfigurieren des E-Mail-Verzeichnisses
# cp 10-mail.conf 10-mail.conf.bak
# vim 10-mail.conf
mail_location = maildir:/var/mail/vmail/%d/%n/Maildir
mail_privileged_group = mail
- Jetzt bearbeiten wir die
10-master.conf
Datei für die Verbindung zum Socket.
# cp 10-master.conf 10-master.conf.bak
# vim 10-master.conf
service auth {
unix_listener auth-userdb {
mode = 0600
user = vmail
}
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
user = dovecot
}
- Nun müssen wir die LDA
15-lda.conf
konfigurieren Datei, um Sieb anzugeben, um E-Mails automatisch im entsprechenden Ordner zu organisieren
# cp 15-lda.conf 15-lda.conf.bak
# vim 15-lda.conf
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve
}
Wir sollten die Erlaubnis erteilen, wenn wir wollen, dass der vmail-Benutzer dovecot starten kann
# chgrp vmail /etc/dovecot/dovecot.conf
Jetzt können Sie den Dovecot-Dienst neu starten
# systemctl restart dovecot
Sie können das E-Mail-Protokoll auf Fehler überprüfen
# tail -n 20 -f /var/log/mail.log
c) Dovecot in Postfix integrieren
Nachdem wir dovecot konfiguriert haben, sollten wir postfix angeben, dass es mit dovecot funktioniert. Bearbeiten Sie die Master-Postfix-Konfigurationsdatei und fügen Sie die folgenden Zeilen am Ende der Datei hinzu
# vim /etc/postfix/master.cf
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}
Bearbeiten Sie nun die Postfix-Hauptkonfigurationsdatei
# vim /etc/postfix/main.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
Danach postfix neu starten
# systemctl restart postfix
Sie können das E-Mail-Protokoll auf Fehler überprüfen
# tail -n 20 -f /var/log/mail.log
Jun 14 08:10:00 myserver postfix/postfix-script[28361]: starting the Postfix mail system
Jun 14 08:10:00 myserver postfix/master[28363]: daemon started -- version 3.3.0, configuration /etc/postfix
Sie können sehen, dass die gesamte Konfiguration gut ist. Jetzt müssen wir einige Tests durchführen
Schritt 4) Test des Mailservers
Für die Tests in der Befehlszeile müssen wir das mailutils-Paket installieren, bevor wir E-Mails senden
# apt install mailutils
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
guile-2.0-libs libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libntlm0 libpython2.7 libpython2.7-minimal libpython2.7-stdlib
mailutils-common
...
...
Jetzt müssen wir einige E-Mails senden und prüfen, ob die Ordner, die den Domänen und Benutzern entsprechen, effektiv erstellt wurden. Dazu senden wir zunächst eine E-Mail an unseren aktuellen Benutzer, der während der Konfiguration in postfixadmin erstellt wurde
# echo "Hello Alain" | mail -s "test mail" [email protected]
Sehen wir uns zuerst das Mail-Log an
# tail -n 20 -f /var/log/mail.log
Jun 14 08:17:04 myserver postfix/qmgr[28374]: 1715240BF9: from=<[email protected]>, size=384, nrcpt=1 (queue active)
Jun 14 08:17:04 myserver dovecot: lda([email protected]): msgid=<[email protected]>: saved mail to INBOX
Jun 14 08:17:04 myserver postfix/pipe[28406]: 1715240BF9: to=<[email protected]>, relay=dovecot, delay=0.05, delays=0.02/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 14 08:17:04 myserver postfix/qmgr[28374]: 1715240BF9: removed
Wir können sehen, dass die E-Mail erfolgreich gesendet wurde. Prüfen wir nun, ob die entsprechenden Ordner erstellt wurden
# ls -R /var/mail/vmail/ /var/mail/vmail/: mytuto.com /var/mail/vmail/mytuto.com: alain /var/mail/vmail/mytuto.com/alain: Maildir /var/mail/vmail/mytuto.com/alain/Maildir: cur dovecot.index.cache dovecot.index.log dovecot-uidlist dovecot-uidvalidity dovecot-uidvalidity.5b222480 new tmp /var/mail/vmail/mytuto.com/alain/Maildir/cur: /var/mail/vmail/mytuto.com/alain/Maildir/new: '1528964224.M129536P28407.myserver,S=455,W=467'
/var/mail/vmail/mytuto.com/alain/Maildir/tmp:
Sie können sehen, dass die Ordner automatisch angezeigt werden. Versuchen wir es zur besseren Übersicht mit dem Befehlsbaum. Installieren Sie es zuerst
apt install tree
Sehen wir uns jetzt die E-Mail-Ordner in einer besseren Ansicht an
# tree /var/mail/vmail/
/var/mail/vmail/
└── mytuto.com
└── alain
└── Maildir
├── cur
├── dovecot.index.cache
├── dovecot.index.log
├── dovecot-uidlist
├── dovecot-uidvalidity
├── dovecot-uidvalidity.5b222480
├── new
│ └── 1528964224.M129536P28407.myserver,S=455,W=467
└── tmp
6 directories, 6 files
Jetzt können Sie perfekt sehen. Wir können einen weiteren Test durchführen, indem wir eine neue virtuelle Domäne und einen neuen Benutzer auf postfixadmin erstellen. Lassen Sie uns die virtuelle Domain example.com erstellen
und der virtuelle Benutzer [email protected]
Lassen Sie uns nun eine E-Mail an den neuen virtuellen Benutzer senden
# echo "Hello Francois" | mail -s "test config" [email protected]
Prüfen Sie nun das Mail-Log
# tail -n 20 -f /var/log/mail.log
Jun 14 08:35:10 myserver postfix/qmgr[28374]: CE43F40C5E: from=<[email protected]>, size=393, nrcpt=1 (queue active)
Jun 14 08:35:10 myserver dovecot: lda([email protected]): msgid=<[email protected]>: saved mail to INBOX
Jun 14 08:35:10 myserver postfix/pipe[28481]: CE43F40C5E: to=<[email protected]>, relay=dovecot, delay=0.06, delays=0.02/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 14 08:35:10 myserver postfix/qmgr[28374]: CE43F40C5E: removed
Überprüfen Sie nun den Ordnerbaum
# tree /var/mail/vmail/
/var/mail/vmail/
├── example.com
│ └── francois
│ └── Maildir
│ ├── cur
│ ├── dovecot.index.cache
│ ├── dovecot.index.log
│ ├── dovecot-uidlist
│ ├── dovecot-uidvalidity
│ ├── dovecot-uidvalidity.5b2228be
│ ├── new
│ │ └── 1528965310.M888145P28482.myserver,S=468,W=480
│ └── tmp
└── mytuto.com
└── alain
└── Maildir
├── cur
├── dovecot.index.cache
├── dovecot.index.log
├── dovecot-uidlist
├── dovecot-uidvalidity
├── dovecot-uidvalidity.5b222480
├── new
│ └── 1528964224.M129536P28407.myserver,S=455,W=467
└── tmp
Sie können sehen, dass wir zwei Unterverzeichnisse mit den Domains mytuto.com haben und example.com welche die Datei für jeden virtuellen Benutzer der verschiedenen Domänen. Machen wir jetzt den letzten Test, die virtuellen Benutzer werden E-Mails austauschen
# echo "Hello Francois, it's Alain" | mail -s "Subject" -aFrom:alain\<[email protected]\> [email protected]
Überprüfen Sie das E-Mail-Protokoll
# tail -n 20 -f /var/log/mail.log
Jun 14 23:15:01 myserver postfix/pickup[28373]: 8558240BDA: uid=0 from=<[email protected]>
Jun 14 23:15:01 myserver postfix/cleanup[28595]: 8558240BDA: message-id=<[email protected]>
Jun 14 23:15:01 myserver postfix/qmgr[28374]: 8558240BDA: from=<[email protected]>, size=398, nrcpt=1 (queue active)
Jun 14 23:15:01 myserver dovecot: lda([email protected]): msgid=<[email protected]>: saved mail to INBOX
Jun 14 23:15:01 myserver postfix/pipe[28597]: 8558240BDA: to=<[email protected]>, relay=dovecot, delay=0.05, delays=0.02/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 14 23:15:01 myserver postfix/qmgr[28374]: 8558240BDA: removed
Wir können jetzt den E-Mail-Ordner sehen
# tree /var/mail/vmail/
/var/mail/vmail/
├── example.com
│ └── francois
│ └── Maildir
│ ├── cur
│ ├── dovecot.index.cache
│ ├── dovecot.index.log
│ ├── dovecot-uidlist
│ ├── dovecot-uidvalidity
│ ├── dovecot-uidvalidity.5b2228be
│ ├── new
│ │ ├── 1528965310.M888145P28482.myserver,S=468,W=480
│ │ └── 1528966081.M582572P28598.myserver,S=455,W=467
...
...
Sie können sehen, dass der Ordner new jetzt zwei Dateien enthält. Wir können die Datei mit der Mail öffnen
# cat /var/mail/vmail/example.com/francois/Maildir/new/1528966081.M582572P28598.hostname\,S\=455\,W\=467
Return-Path: <[email protected]>
Delivered-To: [email protected]
Received: by myserver.domain.com (Postfix, from userid 0)
id 8558240BDA; Thu, 14 Jun 2018 23:15:01 +0000 (UTC)
Subject: Subject
From: alain<[email protected]>
To: <[email protected]>
X-Mailer: mail (GNU Mailutils 3.4)
Message-Id: <[email protected]>
Date: Thu, 14 Jun 2018 23:15:01 +0000 (UTC)
Hello Francois, it's Alain
Sie können den Inhalt sehen, der zeigt, dass es auch funktioniert.
Schlussfolgerung
Sie wissen, wie Sie ein voll funktionsfähiges Mailsystem mit Postfix, Dovecot und Postfixadmin mit Nginx konfigurieren. Das Wichtigste ist, die richtige Erlaubnis zu erteilen, um sich nicht mit Problemen auseinanderzusetzen. Sie sollten beachten, dass Sie dovecot mit anderen Protokollen anstelle von LDA verwenden können. Beim nächsten Mal zeigen wir Ihnen, wie Sie RoundCube installieren, damit die virtuellen Benutzer eine Weboberfläche zum einfachen Lesen ihrer E-Mails haben, und wir werden PhpMyAdmin integrieren, um die Datenbank einfach zu manipulieren. Senden Sie uns gerne Ihre Kommentare, um dieses Tutorial zu verbessern.
Lesen Sie auch:
- Einrichten des Postfix-Mailservers unter Ubuntu 16.04 (Dovecot - MySQL)
- How to Configure Postfix with Webmail on Ubuntu 18.04
- How to Setup Greylisting Service on Postfix Mail Server
- How to Setup Postfix Mail Server with DKIM
- How to Setup Mail Server Using Postfix, MariaDB, Dovecot and Roundcube