GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Virtuelle Benutzer und Domänen mit Postfix, Courier, MySQL und SquirrelMail (Ubuntu 14.04LTS)

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

ein

sudo 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...

machen

dpkg-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

aus

apt-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ühren

postconf -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).

E-Mail 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.


Ubuntu
  1. Virtuelles Hosting mit Proftpd und MySQL (inkl. Quote) auf Ubuntu 14.04LTS

  2. Installation von Lighttpd mit PHP5 (PHP-FPM) und MySQL-Unterstützung auf Ubuntu 14.04LTS

  3. Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (Ubuntu 13.10)

  4. Virtuelle Benutzer und Domänen mit Sendmail

  5. Mailserver mit virtuellen Benutzern und Domains mit Postfix und Dovecot auf einem CentOS 6 VPS

Virtuelles Hosting mit vsftpd und MySQL auf Ubuntu 12.10

Virtuelles Hosting mit Proftpd und MySQL (inkl. Quote) auf Ubuntu 12.10

Virtuelles Hosting mit PureFTPd und MySQL (inkl. Kontingent- und Bandbreitenverwaltung) auf Ubuntu 14.04LTS

Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (Debian Wheezy)

Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (CentOS 6.3 x86_64)

Virtuelle Benutzer und Domänen mit Postfix, Courier, MySQL und SquirrelMail (Fedora 18 x86_64)