Diese Anleitung zeigt euch, wie ihr einfach einem E-Mail Server unter Debian 9 erstellen könnt. Ich habe extra alles möglichst einfach gehalten. Damit hier die Anleitung nicht so lang wird, werde ich auf andere Anleitungen verlinken, um beispielsweise nginx und MariaDB zu installieren.
Update
25.10.2017 | main.cf wurde angepasst und weitere Kleinigkeiten verbessert |
Wenn ihr diese Anleitung nutzt, dann habt ihr später einen E-Mail Server mit Postfix und Dovecot. Die Benutzer verwaltet ihr bequem über eine WebGUI (Postfixadmin). Zusätzlich habt ihr noch die Möglichkeit einen Virenscanner sowie Spamfilter zu installieren. Ebenfalls könnt ihr noch ein Webmail (Roundcube) installieren.
Während dieser Anleitung werden folgende Programme installiert:
- Postfix
- Postfixadmin
- MariaDB
- nginx
- Dovecot
- Spamassassin (optional)
- clamav (optional)
- razor (optional)
- pyzor (optional)
1. Vorraussetzungen
Bevor wir mit dem E-Mailserver anfangen können, müsst ihr noch ein paar Programme installieren und Zertifikate erstellen.
1.1 nginx installieren
Zuerst benötigen wir einen Webserver. Dies ist bei mir nginx.
apt-get update apt-get install nginx
1.2 PHP 7 installieren
Mit nachfolgendem Befehl installiert ihr die neuste PHP7 Version:
apt-get install php7.0-common php7.0-fpm php7.0-cli php7.0-json php7.0-mysql php7.0-curl php7.0-intl php7.0-mcrypt php-pear php7.0-gd php7.0-zip php7.0-xml php7.0-mbstring php7.0-imap
1.3 Zertifikate erstellen
Nun folgt ihr dieser Anleitung um euch Zertifikate für folgende (Sub)Domains zu erstellen:
- eure Domain
- SubDomains
- smtp
- imap
- webmail
- www
So sollte der Befehl am Schluss bei euch aussehen, wenn ihr der obigen Anleitung gefolgt seid:
certbot certonly --rsa-key-size 4096 --webroot -w /var/www/letsencrypt -d eureDomain.de -d www.eureDomain.de -d smtp.eureDomain.de -d imap.eureDomain.de -d webmail.eureDomain.de
Nachdem ihr eure Zertifikate habt, könnt ihr diese noch automatisch erneuern lassen. Wie dies funktioniert habe ich hier erklärt.
Diese Anleitung müsst ihr jedoch noch um folgende Befehle erweitern:
--renew-hook "systemctl reload dovecot && systemctl reload postfix"
Dies bedeutet, dass ihr bei cron folgendes eintragen müsst:
0 4 1 * * /usr/bin/certbot renew --post-hook "service nginx restart" --renew-hook "systemctl reload dovecot && systemctl reload postfix"
1.4 nginx konfigurieren
Um nginx zu konfigurieren folgt ihr dieser Anleitung.
1.5 MariaDB installieren
Für den E-Mail Server benötigen wir später noch eine Datenbank. Diese richten wir nach dieser Anleitung ein.
Nachdem MariaDB installiert ist, legen wir noch einen neuen Benutzer an.
mkdir /var/vmail useradd -u 5000 vmail -d /var/vmail chown vmail:vmail /var/vmail
Nun erstellen wir noch Datenbankeinträge. Dazu loggt ihr euch mit nachfolgendem Befehl in eure Datenbank ein. Das Passwort habt ihr im vorherigen Schritt festgelegt.
mysql -u root -p
Nun gebt ihr folgendes ein:
create database vmail; GRANT ALL ON vmail.* TO 'vmail'@'localhost' IDENTIFIED BY '<euerPasswort>'; Exit
Achtung:
Ihr solltet hier für <euerPasswort> ein sicheres Passwort eingeben. Dieses muss zwischen ‘ ‘ stehen. Also zum Beispiel ‘abc’.
2. Postfixadmin installieren
Nun installieren und konfigurieren wir Postfixadmin. Mit diesem Tool legt ihr später eure E-Mail Konten an. Führt nun einfach die nachfolgenden Befehle aus:
cd /tmp/ wget https://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.1/postfixadmin-3.1.tar.gz tar -xvzf postfixadmin-3.1.tar.gz cp -r postfixadmin-3.1 /var/www/html/postfixadmin cd /var/www/html/postfixadmin/ cp config.inc.php config.local.php mkdir templates_c chown www-data:www-data templates_c/
Führt nun folgenden Befehl aus:
echo "$CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO';" >> /var/www/html/postfixadmin/config.local.php
Nun öffnen wir die neu angelegte Datei
nano /var/www/html/postfixadmin/config.local.php
und ändern folgendes ab:
$CONF['configured'] = false; ----> true $CONF['default_language'] = 'en'; ---> 'de' $CONF['database_user'] = 'postfix'; ---> 'vmail' $CONF['database_password'] = 'postfixadmin'; ---> <euerPasswort> $CONF['database_name'] = 'postfix'; ---> 'vmail' $CONF['admin_email'] = ''; ---> eure Wunsch Admin Adresse $CONF['encrypt'] = 'md5crypt'; --> 'dovecot:SHA512'
3. Dovecot installieren
Nun installieren wir Dovecot mit folgendem Befehl:
apt-get install dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql
4. Postfixadmin einrichten
Nun geht ihr auf eure Domain um Postfixadmin einzurichten. Geht auf folgenden Link: <eureDomain.de>/postfixadmin/setup.php
Nun solltet ihr folgendes sehen:
Wenn ihr die Seite ganz runter scrollt, dann solltet ihr folgendes sehen:
Hier gebt ihr euer Setup Kennwort ein. Dies müsst ihr euch noch ausdenken.
Nach einem Klick auf “Generate Hash Passwort” solltet ihr folgendes sehen:
Diese Zeile müssten wir nun in unserer Konfigdatei anpassen. Dazu öffnen wir die die Konfig
nano /var/www/html/postfixadmin/config.local.php
Hier ändern wir folgendes ab:
$CONF['setup_password'] = 'changeme'; ---> '7eaaf2c38....f9ca22'
Nun können wir die Datei speichern und auf der Homepage einen Super Administrator anlegen. Dieser dient später zum Verwalten aller E-Mail Benutzer.
Wenn alles funktioniert hat, dann solltet ihr folgendes sehen:
5. Postfix installieren
apt-get install postfix postfix-mysql
Nun bekommt ihr entweder eine grafische Oberfläche angezeigt oder nicht. Hatte auf mehreren Server unterschiedliche Installationen.
Optional: nur bei manchen Systemen
Wenn ihr eine grafische Oberfläche seht, dann müsst ihr folgendes tun:
Hier wählt ihr “Internet-Site” aus. Danach gebt ihr euere Domain an:
6. Postfix konfigurieren
Danach wechseln wir in folgendes Verzeichnis und führt nachfolgende Befehle aus. Damit sichert ihr eure bisherige Konfiguration.
cd /etc/postfix mv main.cf main.cf.backup
Nachfolgenden Befehl müsst ihr als ganzes in die Konsole kopieren und ausführen:
echo " # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on # fresh installs. compatibility_level = 2 # TLS parameters smtpd_tls_cert_file=/etc/letsencrypt/live/<eureDomain.de>/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/<eureDomain.de>/privkey.pem smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. smtpd_relay_restrictions = myhostname = <eureDomain.de> alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases #myorigin = /etc/mailname mydestination = $myhostname, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all tls_high_cipherlist = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA128-SHA:AES128-SHA smtp_tls_security_level = may smtp_tls_ciphers = high smtpd_tls_security_level = may smtpd_tls_ciphers = high smtpd_tls_dh1024_param_file = /etc/letsencrypt/live/<eureDomain.de>/dh.pem smtpd_relay_restrictions = smtpd_recipient_restrictions = # Keine Mails mit nicht-existenten Absendern/Empfängern annehmen! reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, # Mails unserer Nutzer/Server erlauben! permit_sasl_authenticated, permit_mynetworks, # Wichtig: Andere Mails an externe Ziele verbieten reject_unauth_destination, # Bei einehenden Mails die Client-IP gegen RBLs checken reject_rbl_client zen.spamhaus.org, reject_rbl_client ix.dnsbl.manitu.net, # Dynamisch prüfen, ob der Empfänger bei Dovecot/Exchange existiert reject_unverified_recipient, # Was jetzt lebt darf durch! permit smtpd_sasl_auth_enable = yes smtpd_sasl_path = private/auth smtpd_sasl_type = dovecot smtpd_tls_auth_only = yes #Handing off local delivery to Dovecot's LMTP, and telling it where to store mail virtual_transport = lmtp:unix:private/dovecot-lmtp local_transport = virtual virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 dovecot_destination_recipient_limit = 1 #Angaben aus der Datei: POSTFIX_CONF.TXT. Diese ist in dem Postfixadmin Download Archiv enthalten virtual_mailbox_base = /var/vmail #virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf" >> main.cf
Nun öffnen wir die Postfix Konfiguration
nano main.cf
und passen dort einige Werte an:
myhostname = irgendwas ----> <eureDomain.de> smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem ----> /etc/letsencrypt/live/<eureDomain.de>/fullchain.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ---->/etc/letsencrypt/live/<eureDomain.de>/privkey.pem smtpd_tls_dh1024_param_file = /etc/letsencrypt/live/<eureDomain.de>/dh.pem
Um den letzten Eintrag zu setzen, muss eine Diffie Hellman Key Datei existieren. Wenn ihr noch keine habt, dann könnt ihr diese mit folgendem Befehl erstellen:
cd /etc/letsencrypt/live/<eureDomain.de>/ openssl dhparam -outform PEM -out dh.pem 2048
Jetzt erstellen wir noch die SQL Dateien, auf die wir eben verlinkt haben. Dazu führen wir folgenden Befehl aus, um einen Ordner zu erstellen.
mkdir /etc/postfix/sql/
Nun führen wir die nächsten Befehle aus. Bei jedem dieser Befehle müsst ihr euer Kennwort eingeben, welches ihr für den Benutzer “vmail” eurer SQL Datenbank benutzt hat. Diese Tabellen sollen nach der offiziellen Postfixadmin Anleitung “POSTFIX_CONF.txt”, aus dem Posftfixadmin Archiv genutzt werden.
echo "user = vmail password = <euerPasswort> hosts = 127.0.0.1 dbname = vmail query = SELECT goto FROM alias WHERE address='%s' AND active = '1'" > /etc/postfix/sql/mysql_virtual_alias_maps.cf
echo "user = vmail password = <euerPasswort> hosts = 127.0.0.1 dbname = vmail 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_maps.cf
echo "user = vmail password = <euerPasswort> hosts = 127.0.0.1 dbname = vmail 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_alias_domain_catchall_maps.cf
echo "user = vmail password = <euerPasswort> hosts = 127.0.0.1 dbname = vmail query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'" > /etc/postfix/sql/mysql_virtual_domains_maps.cf
echo "user = vmail password = <euerPasswort> hosts = 127.0.0.1 dbname = vmail query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'" > /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
echo "user = vmail password = <euerPasswort> hosts = 127.0.0.1 dbname = vmail 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'" > /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
Nachdem ihr die sechs Dateien erstellt habt, müsst ihr noch euer SQL Passwort eintragen. Dies geht am schnellsten mit folgendem Skript:
sed -i -e 2c"password = <euerPasswort>" * Hier müsst ihr <euerPasswort> mit eurem echten Passwort ersetzen. Dann wird das Passwort in den sechs Dateien ausgetauscht.
Nun passen wir die nächste Postfix Konfiguration an. Dazu öffnen wir folgende Datei:
nano /etc/postfix/master.cf
In dieser Datei enternt ihr die “#” vor folgenden Zeilen:
#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_recipient_restrictions= # -o smtpd_relay_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING
7. Dovecot konfigurieren
Nun beginnen wir damit Dovecot zu konfigurieren. Dazu gebt ihr folgenden Befehl ein:
echo "protocols = imap lmtp" >> /etc/dovecot/dovecot.conf
Nun ändern wir noch einige Sachen ab:
sed -i 's/auth_mechanisms = plain/auth_mechanisms = plain login/g' /etc/dovecot/conf.d/10-auth.conf echo "disable_plaintext_auth = no" >> /etc/dovecot/conf.d/10-auth.conf
Nachfolgende Zeilen wieder als ganzes eingeben:
echo " namespace inbox { inbox = yes location = separator = / mailbox Trash { auto = subscribe special_use = \Trash } mailbox Archive { auto = subscribe special_use = \Archive } mailbox Sent { auto = subscribe special_use = \Sent } mailbox Drafts { auto = subscribe special_use = \Drafts } mailbox Junk { auto = subscribe special_use = \Junk } prefix = } userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf } service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } }" >> /etc/dovecot/dovecot.conf
Bei dem nächsten Befehl müsst ihr wieder euer vmail SQL Kennwort eingeben.
echo "driver = mysql connect = host=localhost dbname=vmail user=vmail password=<euerPasswort> default_pass_scheme = SHA512-CRYPT password_query = SELECT password FROM mailbox WHERE username = '%u' user_query = SELECT CONCAT('maildir:/var/vmail/',maildir) AS mail, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username = '%u'" > /etc/dovecot/dovecot-sql.conf
Nun müssen noch Dateiberechtigungen geändert werden.
chown vmail:vmail /etc/dovecot/dovecot-sql.conf chmod 640 /etc/dovecot/dovecot-sql.conf
Nun aktivieren wir IMAP(s). Dabei handelt es sich um eine verschlüsselte IMAP Verbindung.
sed -i -e 22c" port = 993" /etc/dovecot/conf.d/10-master.conf sed -i -e 23c" ssl = yes" /etc/dovecot/conf.d/10-master.conf
Nun konfigurieren wir noch die TLS Einstellungen:
sed -i -e 6c"ssl = required" /etc/dovecot/conf.d/10-ssl.conf
Hier müsst ihr wieder den Pfad zu euren SSL Zertifikaten anpassen.
echo " ssl_cert = </etc/letsencrypt/live/<eureDomain.de>/fullchain.pem ssl_key = </etc/letsencrypt/live/<eureDomain.de>/privkey.pem ssl_dh_parameters_length = 2048 ssl_cipher_list = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA256:EECDH:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!IDEA:!ECDSA:kEDH:CAMELLIA128-SHA:AES128-SHA ssl_prefer_server_ciphers = yes" >> /etc/dovecot/conf.d/10-ssl.conf
Nachfolgend müssen diese Zeilen noch eingegeben werden.
sed -i -e 50c"mode = 0600" /etc/dovecot/conf.d/10-master.conf sed -i '51iuser = postfix' /etc/dovecot/conf.d/10-master.conf sed -i '52igroup = postfix' /etc/dovecot/conf.d/10-master.conf
Jetzt können wir beide Dienste neu starten.
service dovecot restart service postfix restart
8. Postfixadmin Benutzer einrichten
Dazu geht ihr auf eure Domain: https://<eureDomain.de>/postfixadmin/login.php
Dort meldet ihr euch dann mit dem erstellen Superamin Account an.
Eure Webseite sollte nun so aussehen. Nun klickt ihr auf “Domain Liste” -> “Neue Domain”.
Dort schreibt gebt ihr dann den Namen eurer Domain ein und klickt auf “Domain hinzufügen”.
Als nächstes klickt ihr auf “Virtual Liste” -> “Virtual Liste”.
Dort löscht ihr alle bereits vorinstallierten Einträge.
Nun beginnen wir mit dem anlegen unserer eigenen E-Mail Adressen. Dazu klickt ihr auf “Virtual Liste -> Mailbox hinzufügen”.
Hier gebt ihr jetzt unter “Benutzername” den Namen eurer neuen Mailadresse an gefolgt von eurem Passwort.
9. Antivirus / Spamfilter installieren (optional)
Nun wollen wir noch einen Virenscanner installieren, damit dieser immer unsere E-Mails auf Viren prüft. Zudem installieren wir noch einen Spamfilter. Dazu gebt ihr folgenden Befehl ein:
apt-get install amavisd-new clamav-daemon clamav-freshclam spamassassin razor pyzor
Nun legen wir noch einen neuen Benutzer an:
adduser clamav amavis
Nun müsst ihr bei nachfolgenden Zeilen die “#” entfernen.
nano /etc/amavis/conf.d/15-content_filter_mode
#@bypass_virus_checks_maps = ( # \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); #@bypass_spam_checks_maps = ( # \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Jetzt müssen wir unsere bisherige Postfix Konfiguration noch anpassen. Dazu öffnen wir folgende Datei:
nano /etc/postfix/master.cf
Hier ergänzen wir folgende Zeile unter der Zeile: “smtp inet n – y – – smtpd”
-o smtpd_proxy_filter=127.0.0.1:10024
Achtet auf die EINRÜCKUNG !!
Dies sollte so aussehen:
Jetzt sagen wir Postfix noch, dass es Amavis benutzen soll.
echo "content_filter = smtp-amavis:[127.0.0.1]:10024" >> /etc/postfix/main.cf
Nun kopiert ihr diesen kompletten Befehl:
echo " smtp-amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1800 -o smtp_send_xforward_command=yes -o disable_mime_output_conversion=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o smtpd_proxy_filter= -o local_recipient_maps= -o smtpd_authorized_xforward_hosts=127.0.0.0/8 -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_data_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks" >> /etc/postfix/master.cf
Nun aktivieren wir Spamassassin noch mit folgenden Befehlen:
sed -i 's/CRON=0/CRON=1/g' /etc/default/spamassassin sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/spamassassin service clamav-daemon restart service spamassassin start service amavis restart service postfix restart service dovecot restart
9.1 Virenscanner / Spamfilter testen
Ihr habt nun sehr einfach die Möglichkeit euren Virenscanner / Spamfilter zu testen. Um den Spamfilter zu testen verschickt ihr eine Nachricht mit folgendem Inhalt :
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
Die Nachricht sollte als SPAM gewertet werden.
Den Virenscanner könnt ihr mittels des eicar Testvirus testen. Dieses Virus ist ein Virus, das nur zum Testen des Virenscanners dient. Es führt keine Aktionen aus. Die Datei könnt ihr hier downloaden: http://www.eicar.org/85-0-Download.html
Verhalten festlegen, wie euer E-Mail Server bei SPAM reagieren soll
Dieses Verhalten könnt ihr in folgender Datei festlegen:
nano /etc/amavis/conf.d/20-debian_defaults
Bedeutungen der Funktionen
- final_virus_destiny: In dieser E-Mail wurde ein Virus gefunden
- final_banned_destiny: Diese E-Mail wurde aussortiert, da hier gefährliche Anhänge erkannt wurden
- final_spam_destiny: In dieser E-Mail wurde SPAM gefunden
- final_bad_header_destiny: Diese E-Mail hat eine Header Prfüng nicht bestanden.
Bedeutung der Reaktionen
- DISCARD: Die E-Mail wird einfach gelöscht
- BOUNCE: Die E-Mail geht zurück an den Absender
- REJECT: Überlässt Postfix die Aufgabe die E-Mail zurückzusenden
- PASS: Die E-Mail wird zugestellt
Nun könnt ihr folgende Zeilen nach euren Wünschen anpassen:
$final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine) $final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA $final_spam_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; # False-positive prone (for spam)
BOUNCE sollte abgeändert werden, da sonst der Absender viele E-Mails zurückgesandt bekommt, die er womöglich nicht verschickt hat und so selbst zugespammt wird. Ihr könnt alles auf “PASS” stellen, dann bekommt ihr alle E-Mails angezeigt.
10. Roundcube Webmail installieren (optional)
In diesem Kapitel installieren wir noch Roundcube Webmail. So könnt ihr auf alle eure E-Mails über den Browser zugreifen. Dazu downloaden wir uns zuerst die aktuellste Version.
cd /tmp wget https://github.com/roundcube/roundcubemail/releases/download/1.3.0/roundcubemail-1.3.0-complete.tar.gz
Nun entpacken wir den Download und kopieren die Daten an den richtigen Ort.
tar -xf roundcubemail-1.3.0-complete.tar.gz mv roundcubemail-1.3.0 /var/www/html/roundcubemail
Jetzt müssen wir für Roundcube noch einen Datenbankeintrag machen. Dabei müsst ihr noch ein neues Kennwort festlegen.
mysql -u root -p CREATE DATABASE roundcubemail; GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY '<euer_Passwort>'; flush privileges; quit
Nun rufen wir den Webinstaller auf: https://<eureDomain.de>/roundcubemail/installer/
Nun scrollt ihr nach unten und klickt “Next”.
Hier müsst ihr jetzt lediglich euer Datenbank Passwort eingeben, das ihr eben vergeben habt.
Nun klickt ihr auf “Save in /tmp”.
Diese Datei kopieren wir jetzt ins richtige Verzeichnis und passen noch Rechte an:
mv /tmp/config.inc.php /var/www/html/roundcubemail/config/ cd /var/www/html/roundcubemail chown www-data:www-data temp/ logs/
Nachdem ihr die Datei kopiert habt ruft ihr eure Webseite erneut auf: https://<eureDomain.de>/roundcubemail/installer/
Nun solltet ihr dies sehen:
Dann klickt ihr auf “Initialize database”.
Jetzt ist Roundcube installiert und wir löschen noch die Installationsdateien:
rm -R /var/www/html/roundcubemail/installer/
Jetzt könnt ihr Roundcube starten: https://<eureDomain.de>/roundcubemail/
Herzlichen Glückwunsch zu eurem eigenen E-Mail Server.
Wenn ihr noch Verbesserungsvorschläge / Fehler habt, dann schreibt einfach in die Kommentare.
Hallo Christian … zum zweiten 😉
Dieses HowTo passt ja noch besser zu meinen sowieso schon installierten Komponenten. 🙂
Sehr schön … Dank dir schon mal! Ich werde berichten ob’s geklappt hat!
Gruß David
hey bei mir sind alle postfixadmin seiten weiß ! bitte um hilfe! (ts.luxuscraft.tk/postfixadmin)
Großes Lob, danke für diesen hilfreichen Artikel! Es funktioniert mit ein bisschen Gefummel alles. Der Spam und Virenfilter funktioniert ebenfalls. Jedoch fände ich es toll, wenn Serverseitig Spam-Mails direkt in den Junk-Order landen würden. Dafür habe ich schon das dovecot-sieve Plugin probiert, aber das funktioniert damit leider nicht, da die Mails trotz der Regel nicht im Junk Ordner landen, sondern die Mails weiterhin direkt in den Posteingang gehen. Fehlermeldungen sind in den Logs auch nicht zu verzeichnen.
require “fileinto”;
if header :contains “X-Spam-Flag” “YES” {
fileinto “Junk”;
}
Ich vermute das liegt an den vusern bzw vmailboxes, oder dass der spamfillter/virenfilter das direkt an das Postfach durchreicht, anstatt noch das dovecot-sieve Plugin zu durchlaufen. Ich fände es toll, wenn Sie das aktuelle Tutorial mit der kleinen “in den Spam-Ordner” Regel erweitern könnten.
Viele Grüße,
Jan
Kann es sein, dass dovecot hier für die Mail-Delivery überhaupt nicht zum Einsatz kommt?
Hallo Christian,
vorab ein MEGA How-To….
Ich bin zur Zeit bei dem Punkt wo ich die setup.php aufrufen muss. Leider bekomme ich den Fehler HTTP error 500 als Rückmeldung von meinen Browser. Wenn ich den error.log von nginx auslese bekomme ich folgende Fehlermeldung:
2019/01/07 06:07:07 [error] 466#466: *63 FastCGI sent in stderr: “PHP message: PHP Parse error: syntax error, unexpected ‘=’ in /var/www/html/postfixadmin/config.local.php on line 605” while reading response header from upstream, client: 80.146.220.157, server: <meinedomain.net>, request: “GET /setup.php HTTP/2.0”, upstream: “fastcgi://unix:/run/php/php7.0-fpm.sock:”, host: “<meinedomain.net>
Ich kann bis jetzt den Fehler nicht finden. Kannst du mir ein Tipp geben?
Danke
Hallo Christian.
Ich möchte mich vorab auch recht herzlich für dein ausführliches HOW-TO bedanken.. konnte mich im Großen und Ganzen gut an deiner Anleitung “entlanghangeln”.
Da dein letztes Update vom Oktober 2017 stammt wollte ich mal um ein weiteres Update bitten, zumal ja nun auch postfixadmin als Version 3.2 verfügbar ist und es hier wohl Anpassugnen gab bzgl. des “public”-Ordners.
Auch habe ich Probleme beim Erstellen eines neuen Mailkontos über postfixadmin, da es dort beim Anlegen zu einem “TimeOut” kommt, jegliche Website-Anfragen “frieren” ab dem Zeitpunkt ein, sodass ich nur mittels Restarts des “postfix” und “dovecot” – Dienstes mich dann wieder im postfixadmin einwählen kann.
Würde mich wie gesagt über ein HOWTO-Update bzgl. der aktuellen Gegenenheiten freuen.
Mein Debian Server freut sich schon auf seine neuen Aufgaben :-).
Grüße.
Hallo Christian,
der Versuch sich über den E-mail-client einzuloggen ist nicht erfolgreich.
Der Server wird aber grundsätzlich akzeptiert. Im Syslog des Servers ist folgendes zu finden:
Error: chdir(/var/vmail/mailboxes/DOMAIN/info/) failed: Permission denied (euid=5000(<unknown>) egid=5000(<unknown>) missing +x perm: /var/vmail, we’re not in group 1002(vmail), dir owned by 1001:1002 mode=07
70)
Kann es sein, dass in einer der Konfigurationsdateien noch an einer weiteren Stelle “user=postfix” durch “user=vmail” ersetzt werden muss?
Danke und viele Grüße
Mega Erklärung, vorab Vielen Dank dafür.
Ich habe soweit alles erstellt. Ich kann mich am Postfix Admin anmelden und sehe zumindest auch den Roundcube Login Bildschirm. Allerdings kann ich mich nicht anmelden. Was ist den jetzt der richtige Benutzername? vmail? admin? roundcube? admin@.de?
Ich bekomme immer die Meldung “Verbindung zum Speicherserver fehlgeschlagen.”
Vielen Dank für die gute Anleitung,
leider habe ich probleme mit dem Postfix:
Jul 21 19:23:42 HOSTNAME postfix/postfix-script[13425]: stopping the Postfix mail system
Jul 21 19:23:42 HOSTNAME postfix/master[13074]: terminating on signal 15
Jul 21 19:23:43 HOSTNAME postfix/postfix-script[13587]: starting the Postfix mail system
Jul 21 19:23:43 HOSTNAME postfix/master[13589]: daemon started — version 3.1.8, configuration /etc/postfix
Jul 21 19:23:55 HOSTNAME postfix/tlsmgr[13597]: warning: request to update table btree:/smtpd_scache in non-postfix directory /
Jul 21 19:23:55 HOSTNAME postfix/tlsmgr[13597]: warning: redirecting the request to postfix-owned data_directory /var/lib/postfix
Jul 21 19:23:55 HOSTNAME postfix/tlsmgr[13597]: warning: request to update table btree:/smtp_scache in non-postfix directory /
Jul 21 19:23:55 HOSTNAME postfix/tlsmgr[13597]: warning: redirecting the request to postfix-owned data_directory /var/lib/postfix
Jul 21 19:23:55 HOSTNAME postfix/smtpd[13595]: connect from HOSTNAME.sub.domain.de[xxx.xxx.xxx]
Jul 21 19:23:55 HOSTNAME postfix/smtpd[13595]: NOQUEUE: reject: RCPT from HOSTNAME.sub.domain.de[xxx.xxx.xxx]: 554 5.7.1 <blabla@mail.com>: Relay access denied; from=<Jira@HOSTNAME.sub.domain.de> to=<blabla@mail.com> proto=ESMTP helo=<HOSTNAME.blabla.de>
Jul 21 19:23:55 HOSTNAME postfix/smtpd[13595]: disconnect from HOSTNAME.sub.domain.de[xxx.xxx.xxx] ehlo=1 mail=1 rcpt=0/1 rset=1 quit=1 commands=4/5
Jul 21 19:24:17 HOSTNAME postfix/smtpd[13595]: connect from HOSTNAME.sub.domain.de[xxx.xxx.xxx]
Jul 21 19:24:17 HOSTNAME postfix/smtpd[13595]: NOQUEUE: reject: RCPT from HOSTNAME.sub.domain.de[xxx.xxx.xxx]: 554 5.7.1 <blabla@web.de>: Relay access denied; from=<Jira@HOSTNAME.sub.domain.de> to=<blabla@web.de> proto=ESMTP helo=<HOSTNAME.blabla.de>
Jul 21 19:24:17 HOSTNAME postfix/smtpd[13595]: disconnect from HOSTNAME.sub.domain.de[xxx.xxx.xxx] ehlo=1 mail=1 rcpt=0/1 rset=1 quit=1 commands=4/5
Ich kann mit dem Log leider nicht sehr viel Anfangen.
wenn ich über Telnet verbinde ind auth ogin probiere bekomme ich AUTH command failed: 503 5.5.1 Error: authentication not enabled zurück
Über java mail den fehler 554 5.7.1 (Relay access denied)
Hallo Christian,
danke für deine super Anleitungen! Mit diesem und einem youtube Video konnte ich meinen Mailserver aufsetzten. Ein Problem hatte ich nur. In der var/log/auth.log kam immer eine Fehlermeldung aber mit dieser Anleitung konnte ich diese beheben: https://www.christianroessler.net/tech/2014/auth-log-fix-pam-unix-dovecot-auth-error.html
Dadurch laufen die Services nun auch deutlich flüssiger! Vielleicht solltest du dies ebenfalls aufnehmen?
Danke noch einmal!
Nino
Was macht eigentlich die Zeile:
bei mir funktioniert alles, bis auf das Empfangen von E-Mails. maillog sagt “Relay access denied”.
wenn ich via telnet/nc den SMTP testen möchte fraget er mich beim “EHLO localhost” nach einem auth – so blöd es klingt, aber wo haben wir das konfiguriert? 😉
Hi,
ist dein Tutorial auch mit Ubuntu 16.04 und Apache2 möglich?
VG Alex
Hallo,
vielen Dank für diese tolle Anleitung!
Ich habe versucht mit postfixadmin eine weitere Domain einzurichten, die auf den Server zeigt. Ich kann auch von dieser Domain aus Mails verschicken, aber keine Empfangen. Dabei bekomme ich immer folgende Fehlermeldung zurück:
Hast du eine Idee, wie ich auch Mails an die zweite Domain zugestellt bekommen kann?
Liebe Grüße
Max
So es hat mir keine Rihe gelassen und ich bin die Logs durch:
Fehler war in Line 599
*74 FastCGI sent in stderr: “PHP message: PHP Parse error: syntax error, unexpected ‘=’ in /var/www/html/postfixadmin/config.local.php on line 599″…….
dort war der Eintrag:
[‘domain_path’] = ‘YES’; [‘domain_in_mailbox’] = ‘NO’;
der über den Echo Befehl eingespielt wurde. Diesen hab ich auskommentiert und es läuft…
Moin,
habe mich an alles gehalten und bekomme bei Postfixadmin im Browser diese Fehlermeldung:
domain.tlt/postfixadmin kann diese Anfrage momentan nicht verarbeiten.
HTTP ERROR 500
php.info zeigt er mir aber an…
Hat da jemand ne Idee zu?
Alles hat funktioniert, nur Roundcube will – mal wieder nicht – funktionieren.
Postfach ist angelegt mit Kennwort etc und als Fehlermeldung erhalte ich
“Verbindung zum Speicherserver fehlgeschlagen”
Hallo Christian,
zuerst einmal vielen Dank für die sehr ausführliche Anleitung.
Ich habe nun die Grundlegenden Einstellungen für Dovecot und Postfix vorgenommen. Ich kann mich mit Roundcube anmelden. Emails senden kann ich aber noch nicht, der Fehlercode lautet:
SMTP Fehler (250): Die Authentisierung ist fehlgeschlagen.
Kannst du mir helfen? In den LogFiles sehe ich nichts.
wenn ich auf der Console “sendmail user@meine.tld text” eintippe, erhalte ich die mail im Roundcube.
Viele Grüße,
Sebastian
Hallo Christian,
danke erst einmal für die tolle Anleitung.
Ich bin allen Schritten gefolt nur mein Roundcube funktioniert nicht. Wie besteht der zusammenhang wenn ich einen User mit Mailbox via Postfix admin erstelle mit Rundcube?
Die beiden Datenbanken vmail und roundcubemail stehen ja in keiner Verbindung.
Gruß,
Jan