Dieses Tutorial ist Copyright (c) 2014 von Falko Timme &Srijan Kishore. Es ist abgeleitet von einem Tutorial von Christoph Haas, das Sie unter http://workaround.org finden. Es steht Ihnen frei, dieses Tutorial unter der Creative Commons-Lizenz 2.5 oder einer späteren Version zu verwenden.
Dieses Dokument beschreibt, wie Sie einen Postfix-Mailserver installieren, der auf virtuellen Benutzern und Domänen basiert, d. h. Benutzern und Domänen, die sich in einer MySQL-Datenbank befinden. Ich werde auch die Installation und Konfiguration von Courier (Courier-POP3, Courier-IMAP) demonstrieren, damit Courier sich bei derselben MySQL-Datenbank authentifizieren kann, die Postfix verwendet.
Der resultierende Postfix-Server ist SMTP-AUTH-fähig und TLS und Quote (Kontingent ist standardmäßig nicht in Postfix integriert, ich werde zeigen, wie Sie Ihr Postfix entsprechend patchen können). Passwörter werden verschlüsselt gespeichert Formular in der Datenbank (die meisten Dokumente, die ich gefunden habe, befassten sich mit Passwörtern im Klartext, was ein Sicherheitsrisiko darstellt). Darüber hinaus behandelt dieses Tutorial die Installation von Amavisd , SpamAssassin und ClamAV damit E-Mails auf Spam und Viren gescannt werden. Ich werde auch zeigen, wie man SquirrelMail installiert als Webmail-Schnittstelle, damit Benutzer E-Mails lesen und senden und ihre Passwörter ändern können.
Der Vorteil eines solchen „virtuellen“ Setups (virtuelle Benutzer und Domänen in einer MySQL-Datenbank) ist, dass es wesentlich performanter ist als ein Setup, das auf „echten“ Systembenutzern basiert. Mit diesem virtuellen Setup kann Ihr Mailserver Tausende von Domänen und Benutzern verwalten. Außerdem ist es einfacher zu administrieren, da Sie sich nur mit der MySQL-Datenbank befassen müssen, wenn Sie neue Benutzer/Domains hinzufügen oder bestehende bearbeiten. Keine Postmap-Befehle mehr zum Erstellen von db-Dateien, kein erneutes Laden von Postfix usw. Für die Verwaltung der MySQL-Datenbank können Sie webbasierte Tools wie phpMyAdmin verwenden, die auch in diesem Howto installiert werden. Der dritte Vorteil ist, dass Benutzer eine E-Mail-Adresse als Benutzernamen haben (statt Benutzername + E-Mail-Adresse), was einfacher zu verstehen und zu merken ist.
Dieses Howto ist als praktischer Leitfaden gedacht; es deckt nicht die theoretischen Hintergründe ab. Sie werden in vielen anderen Dokumenten im Internet behandelt.
Dieses Dokument wird ohne jegliche Gewährleistung geliefert! Ich möchte sagen, dass dies nicht die einzige Möglichkeit ist, ein solches System einzurichten. Es gibt viele Wege, dieses Ziel zu erreichen, aber ich gehe diesen Weg. Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!
1 Vorbemerkung
Dieses Tutorial basiert auf Ubuntu 14.04 Server (Trusty Tahr), daher sollten Sie eine grundlegende Ubuntu 14.04-Serverinstallation einrichten, bevor Sie mit diesem Tutorial fortfahren. Das System sollte eine statische IP-Adresse haben. Ich verwende 192.168.0.100 als IP-Adresse in diesem Tutorial und server1.example.com als Hostnamen.
Stellen Sie sicher, dass Sie als root angemeldet sind (geben Sie
einsudo su
um root zu werden), da wir alle Schritte aus diesem Tutorial als root-Benutzer ausführen müssen.
Es ist sehr wichtig, dass Sie /bin/sh zu einem symbolischen Link zu /bin/bash...
machendpkg-reconfigure Bindestrich
Dash als Standardsystem-Shell verwenden (/bin/sh)? <-- Nein
... und dass Sie AppArmor deaktivieren, wenn Sie apparmor:unrecognized service erhalten, dann entfernen Sie es aus update-rc.d
service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils
2 Installieren Sie Postfix, Courier, Saslauthd, MySQL, phpMyAdmin
Um Postfix, Courier, Saslauthd, MySQL und phpMyAdmin zu installieren, führen wir einfach
ausapt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server kurier-authdaemon kurier-authlib-mysql kurier-pop kurier-pop-ssl kurier-imap kurier-imap-ssl libsasl2-2 libsasl2-module libsasl2-module -sql sasl2-bin libpam-mysql openssl phpmyadmin apache2 libapache2-mod-php5 php5 php5-mysql libpam-smbpass
Ihnen werden einige Fragen gestellt:
Neues Passwort für den MySQL-Benutzer „root“:<-- yourrootsqlpassword
Passwort für den MySQL-Benutzer „root“ wiederholen:<-- yourrootsqlpassword
Verzeichnisse für webbasierte Verwaltung erstellen? <-- Nein
Allgemeine Art der E-Mail-Konfiguration:<-- Internet-Site
System-E-Mail-Name:<-- server1.example.com
SSL-Zertifikat erforderlich <-- Ok
Webserver zur automatischen Neukonfiguration:<-- apache2
Datenbank für phpmyadmin mit dbconfig-common konfigurieren? <-- Nein
3 Wenden Sie den Quoten-Patch auf Postfix an
Wir müssen die Postfix-Quellen besorgen, sie mit dem Quota-Patch patchen, neue Postfix-.deb-Pakete erstellen und diese .deb-Pakete installieren:
apt-get build-dep postfix
Manchmal können Sie einen Fehler wie folgt erhalten:-
[email protected]:~# apt-get build-dep postfix
Paketlisten lesen... Fertig
Abhängigkeitsbaum erstellen
Zustandsinformationen lesen... Fertig
E:Du müssen einige "Quell"-URIs in Ihre sources.list aufnehmen
[email protected]:~#
Sie können dies wie folgt korrigieren, indem Sie die Quell-Repositories hinzufügen:
vi /etc/apt/sources.list
Machen Sie den Eintrag wie in meinem Fall
deb http://archive.ubuntu.com/ubuntu Trusty Main Restricted Universe
deb http://archive.ubuntu.com/ubuntu Trusty-Updates Main Restricted Universe
deb http://security.ubuntu .com/ubuntu Trusty-Security Main Restricted Universe Multiverse
deb http://archive.canonical.com/ubuntu Trusty Partner
deb-src http://archive. ubuntu.com/ubuntu Trusty Main Restricted Universe
deb-src http://archive.ubuntu.com/ubuntu Trusty-Updates Trusty-Updates Main Restricted Universe
deb-src http://security.ubuntu.com/ Ubuntu Trusty-Security Main Restricted Universe Multiverse
deb-src http://archive.canonical.com/ubuntu Trusty Partner
Weiter
apt-get update
apt-get build-dep postfix
cd /usr/src
apt-get source postfix
(Stellen Sie sicher, dass Sie in den folgenden Befehlen die richtige Postfix-Version verwenden. Ich habe Postfix 2.11.0 installiert. Sie können Ihre Postfix-Version herausfinden, indem Sie
ausführenpostconf -d | grep mail_version
Die Ausgabe sollte so aussehen:
[E-Mail-geschützt]:/usr/src# postconf -d | grep mail_version
mail_version =2.11.0
milter_macro_v =$mail_name $mail_version
[email protected]:/usr/src#
wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.10.0.patch
cd postfix-2.11.0
patch -p1 <../postfix-vda-v13 -2.10.0.patch
Öffnen Sie als nächstes debian/rules und ändern Sie DEB_BUILD_HARDENING von 1 auf 0:
vi debian/rules
[...] export DEB_BUILD_HARDENING=0 [...] |
Wenn Sie dies nicht tun, schlägt Ihr Build mit den folgenden Fehlermeldungen fehl:
maildir.c:In Funktion âdeliver_maildirâ:
maildir.c:974:17:Fehler:Format kein String-Literal und keine Formatargumente [-Werror=format-security]
maildir.c:977:17 :Fehler:Format kein String-Literal und keine Formatargumente [-Werror=Format-Sicherheit]
maildir.c:983:17:Fehler:Format kein String-Literal und keine Formatargumente [-Werror=Format-Security ]
maildir.c:986:17:error:format not a string literal and no format arguments [-Werror=format-security]
maildir.c:In function âsql2fileâ:
maildir. c:404:25:Warnung:Rückgabewert von âreadâ ignorieren, deklariert mit Attribut warn_unused_result [-Wunused-result]
maildir.c:417:26:Warnung:Rückgabewert von âwriteâ ignorieren, deklariert mit Attribut warn_unused_result [- Wuused-Ergebnis]
cc1:Einige Warnungen werden als Fehler behandelt
make:*** [maildir.o] Fehler 1
make:Verzeichnis verlassen `/usr/src/postfix-2.11. 0/src/virtual'
make[1]:*** [update] Error 1
make[1]:Leaving directory `/usr/src/postfi x-2.11.0'
make:*** [build] Error 2
dpkg-buildpackage:error:debian/rules build hat Fehlerbeendigungsstatus 2 ausgegeben
[email protected]:/usr /src/postfix-2.11.0#
Jetzt können wir die neuen Postfix .deb-Pakete bauen:
dpkg-buildpackage
Jetzt gehen wir ein Verzeichnis nach oben, dort wurden die neuen .deb-Pakete erstellt:
CD ..
Der Befehl
ls -l
zeigt Ihnen die verfügbaren Pakete:
[email protected]:/usr/src# ls -l
insgesamt 6824
drwxr-xr-x 18 root root 4096 Apr 30 04:28 postfix-2.11.0
-rw-r --r-- 1 root root 46756 Apr 30 04:28 postfix-cdb_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 142842 Apr 30 04:28 postfix-dev_2.11.0 -1_all.deb
-rw-r--r-- 1 root root 851842 Apr 30 04:28 postfix-doc_2.11.0-1_all.deb
-rw-r--r-- 1 root root 53898 Apr 30 04:28 postfix-ldap_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 48500 Apr 30 04:28 postfix-mysql_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 48610 30. Apr 04:28 postfix-pcre_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 48324 30. Apr 04:28 postfix-pgsql_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 55701 Jun 7 2013 postfix-vda-v13-2.10.0.patch
-rw-r-- r-- 1 root root 267855 Apr 30 04:27 postfix_2.11.0-1.diff.gz
-rw-r--r-- 1 root root 1522 Apr 30 04:27 postfix_2.11.0-1.dsc
-rw-r--r-- 1 root root 3885 Apr 30 04:28 postfix_2.11.0-1_amd64.changes
-rw-r --r-- 1 root root 1329238 Apr 30 04:28 postfix_2.11.0-1_amd64.deb
-rw-r--r-- 1 root root 4034741 Feb 12 01:38 postfix_2.11.0.orig.tar .gz
[E-Mail-geschützt]:/usr/src#
Wählen Sie die Pakete postfix und postfix-mysql aus und installieren Sie sie wie folgt:
dpkg -i postfix_2.11.0-1_amd64.deb postfix-mysql_2.11.0-1_amd64.deb
4 Erstellen Sie die MySQL-Datenbank für Postfix/Courier
Jetzt erstellen wir eine Datenbank namens mail:
mysqladmin -u root -p Mail erstellen
Diese Frage wird Ihnen gestellt:
Passwort eingeben:<-- yourrootsqlpassword
Als nächstes gehen wir zur MySQL-Shell:
mysql -u root -p
Auf der MySQL-Shell erstellen wir den Benutzer mail_admin mit dem Passwort mail_admin_password (ersetzen Sie es durch Ihr eigenes Passwort), der die Berechtigungen SELECT, INSERT, UPDATE, DELETE in der Mail-Datenbank hat. Dieser Benutzer wird von Postfix und Courier verwendet, um sich mit der Mail-Datenbank zu verbinden:
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'mail_admin_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost. localdomain' IDENTIFIZIERT DURCH 'mail_admin_password';
FLUSH PRIVILEGES;
Immer noch auf der MySQL-Shell erstellen wir die von Postfix und Courier benötigten Tabellen:
E-Mail VERWENDEN;
CREATE TABLE domains (
domain varchar(50) NOT NULL,
PRIMARY KEY (domain) )
ENGINE=MyISAM;
CREATE TABLE forwardings (
source varchar(80) NOT NULL,
destination TEXT NOT NULL,
PRIMARY KEY (source) )
ENGINE=MyISAM;
CREATE TABLE-Benutzer (
E-Mail-Varchar(80) NOT NULL,
Passwort-Varchar(20) NOT NULL,
Quote INT(10) DEFAULT '10485760',
PRIMARY KEY (E-Mail )
) ENGINE=MyISAM;
CREATE TABLE transport (
domain varchar(128) NOT NULL default '',
transport varchar(128) NOT NULL default '',
UNIQUE KEY domain (domain)
) ENGINE =MyISAM;
beenden;
Wie Sie vielleicht bemerkt haben, mit dem Beenden; Befehl haben wir die MySQL-Shell verlassen und befinden uns wieder auf der Linux-Shell.
Die Domänen Tabelle speichert jede virtuelle Domain, für die Postfix E-Mails erhalten soll (z. B. example.com ).
Domäne |
beispiel.com |
Die Weiterleitungen Tabelle dient zum Aliasing einer E-Mail-Adresse zu einer anderen, z. E-Mails für [email protected] weiterleiten an [email protected] .
Quelle | Ziel |
[E-Mail-geschützt] | [E-Mail-geschützt] |
Die Benutzer Tabelle speichert alle virtuellen Benutzer (d. h. E-Mail-Adressen, weil E-Mail-Adresse und Benutzername identisch sind) und Passwörter (in verschlüsselt Formular!) und einen Kontingentwert für jedes Postfach (in diesem Beispiel ist der Standardwert 10485760 Bytes, was 10 MB entspricht).
Passwort | Kontingent | |
[E-Mail-geschützt] | No9.E4skNvGa. ("geheim" in verschlüsselter Form) | 10485760 |
Der Transport Tabelle ist optional, sie ist für fortgeschrittene Benutzer. Es erlaubt, Mails für einzelne Benutzer, ganze Domänen oder alle Mails an einen anderen Server weiterzuleiten. Beispiel:
Domäne | Transport |
beispiel.com | smtp:[1.2.3.4] |
würde alle E-Mails für example.com weiterleiten über das SMTP-Protokoll an den Server mit der IP-Adresse 1.2.3.4 (die eckigen Klammern [] bedeutet "keine Suche nach dem MX-DNS-Eintrag durchführen" (was für IP-Adressen sinnvoll ist ...). Wenn Sie stattdessen einen vollständig qualifizierten Domänennamen (FQDN) verwenden, würden Sie die eckigen Klammern nicht verwenden.).
Übrigens (ich gehe davon aus, dass die IP-Adresse Ihres Mailserversystems 192.168.0.100 ist) Sie können über http://192.168.0.100/phpmyadmin/ in einem Browser auf phpMyAdmin zugreifen und sich als mail_admin anmelden. Dann können Sie einen Blick in die Datenbank werfen. Später können Sie mit phpMyAdmin Ihren Mailserver verwalten.