Howto Anleitung zur Installation und Konfiguration von Postfix mit Googlemail als smtp-mailrelay 2015 Stefan W. Lambert kontakt@stefanius.de
Copyright-Hinweis Dieses Dokument obliegt den Bestimmungen der GNU-Lizenz für freie Dokumentation (GNU Free Documentation License Version 1.2) und darf unter Beachtung der Bestimmungen dieser Lizenz frei genutzt werden. Haftungsausschluß Die Nutzung dieses Dokumentes erfolgt auf eigene Gefahr. Der Autor übernimmt keinerlei Haftung für Schäden, die durch die Verwendung des Dokumentes entstehen. Ebenso übernimmt der Autor keinerlei Haftung für inhaltliche oder fachliche Mängel des Dokumentes Autor Stefan W. Lambert kontakt@stefanius.de Stand: 06.10.15 - Seite 2 - Ersteller: Stefan W. Lambert
Inhaltsverzeichnis 0.Vorbemerkung...5 1.Voraussetzungen...7 2.Postfix installieren und konfigurieren...8 3.Funktionstest durchführen...14 Stand: 06.10.15 - Seite 3 - Ersteller: Stefan W. Lambert
Stand: 06.10.15 - Seite 4 - Ersteller: Stefan W. Lambert
0. Vorbemerkung Viele Serverdienste und Monitoring-Applikationen wie LogWatch und Webmin verfügen über die Option Status- oder Benachrichtigungs-Emails zu senden. Dazu muss auf dem HomeServer/HomeNAS ein sog. MTA (Mail Transfer Agent) installiert und konfiguriert werden. Der 'Klassiker' in diesem Bereich ist 'sendmail'. Die Konfiguration des Programms ist jedoch sehr umständlich, so dass ich den ebenso leistungsfähigen MTA 'postfix' bevorzuge. Im Spam Zeitalter genügt es zum Versenden von Emails aus einem Heimnetzwerk jedoch nicht auf dem HomeServer/HomeNAS einen MTA zu installieren. I. d. R. ist ein Heimnetzwerk per DSL oder Kabel mit einer dynamischen IP-Adresse am Internet angebunden.da in der Vergangenheit sehr viele Spam-Emails über Server mit dynamischer IP-Adresse verschickt wurden, sind mittlerweile alle Mailserver so konfiguriert, dass sie nur Emails von Servern mit fester IP- Adresse annehmen. Das bedeuted, die Emails vom HomeServer/HomeNAS müssen über einen 'richtigen' Emailserver, wie z.b. der smtp-server von Google oder anderen Email- bzw. Internetprovidern, geleitet werden. Dieser smtp-server wird auch als smtp- Relay-Host bezeichnet. In der Praxis läuft der Versand einer Email vom HomeServer/HomeNAS per smtp- Relayserver folgendermaßen ab. Der MTA Postfix auf dem HomeServer/HomeNAS ist für den Versand von Emails über einen smtp-relay-server konfiguriert In dieser Anleitung wird das der smtp-server von Google sein Als Voraussetzung muss bei Google ein gültiges Emailkonto angelegt sein (im Beispiel: MyEmail@gmail.com mit dem Passwort 01234567890) Wird vom HomeServer/HomeNAS eine Email z. B. an kontakt@stefanius.de versendent, kontaktiert sich der MTA des HomeServer/HomeServer den smtp-server von Google und authentifiziert sich mit dem Goggle- Benutzernamen MyEmail@gmail.com und dem zugehörigen Passwort 01234567890. Nachdem der smtp-server von Google die Benuterdaten verifiziert hat, nimmt er die Email entgegen, und leitet die Email an den Emfänger (kontakt@stefanius,de) weiter. Dabei setzt er als Absenderadresse MyEmail@gmail.com ein. Der smtp-server von stefanius.de akzeptiert die Nachricht, da sie von einem smtp-server mit fester IP-Adresse (gmail.com) versendet wurde. Stand: 06.10.15 - Seite 5 - Ersteller: Stefan W. Lambert
Neben dem in diesem Tutorial benutzen google smtp-server bieten auch andere Email- bzw. Internet-Provider für Ihre Kuden einen kostenlosen 'SMTP-Relay- Server' an. Mir bekannt sind die Firmen '1und1' und 'Strato' Achtung!!! Der Einsatz eines smtp-relayservers bietet zwar die Möglichkeit von Rechnern mit dynamischer IP-Adresse Emails zu versenden. Wer jedoch jetzt auf die Idee kommen sollte, Spamnachrichten mit dieser Methode zu verbreiten, dem sei folgendes gesagt. Die tatsächliche, sprich dynamische IP-Adresse des Absenderechners läßt sich problemlos über den Mailheader der Nachricht herausfinden. Anders ausgedrückt: Firmen wie Google, 1und1, Stato, usw. sind 'not amused' wenn über deren Server 'Schindluder' getrieben wird. Das kann für den Verursacher sehr schnell sehr teuer werden. Stand: 06.10.15 - Seite 6 - Ersteller: Stefan W. Lambert
1. Voraussetzungen Die Voraussetzungen zur Umsetzung des Tutorials sind: ein gültiges Google-Benutzerkonto beliebige Rechnerhardware (PC, Cubieboards, Raspberry Pi2, Odroid XU3/XU4, sonstige Minicomputer mit Ubuntu 14.04 LTS Betriebssystem Ubuntu 14.04 LTS und Derivate enschl. akiralinux Anmerkung Da es sich bei Postfix um eine Standardapplikation im Linux-/Unixbereich handelt, gehe ich davon aus, dass das Tutorial auch mit anderen Linuxdistrubutionen und Unixsystemen erfolgreich umgesetzt werden kann. Das habe ich jedoch nicht getestet und kann aus diesem Grund ausschließlich für Ubuntu 14.04 basierte Systeme Support leisten. Stand: 06.10.15 - Seite 7 - Ersteller: Stefan W. Lambert
2. Postfix installieren und konfigurieren Wie unter Punkt 1 'Voraussetzungen' beschrieben ist dieses Tutorial sowohl für PC's. Wie auch für Einplatinencomputer wie Cuboard2/Cubietruck, Raspberry Pi 2 und Odroid XU3/XU4 gültig. Erstellt habe ich das Tutorial auf einem Cubietruck, falls notwendig werde ich aber auf Unterschiede zu anderen Systemen eingehen. Ich gehe aber davon aus, dass die Besitzer anderer Einplatinencomputer wissen, das der Standardbenutzer dort nicht 'linaro' sondern 'odroid' bzw. 'ubuntu' heißt. Schritt 1 System starten, anmelden (an der Konsole oder per ssh) und per sudo -i zum Benutzer root wechseln Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 4.2.1 armv7l) * Documentation: https://help.ubuntu.com/ Last login: Sun Oct 4 17:28:10 2015 linaro@cubiehomesrv:~$ sudo -i Stand: 06.10.15 - Seite 8 - Ersteller: Stefan W. Lambert
Schritt 2 notwendige Programmpakete installieren und 'vorkonfigurieren' root@cubiehomesrv:~# apt-get install postfix mailutils libsasl2-2 cacertificates libsasl2-modules In der Postfix-Konfiguration werden diverse Einstellungsoptionen abgefragt. Wichtig ist, dass hier 'Internet mit Smarthost' ausgewählt wird. Hier den Hostnamen des Rechners einschl. des Domainnamens des Heimnetzwerkes eintragen Stand: 06.10.15 - Seite 9 - Ersteller: Stefan W. Lambert
Hier den Hostnamen einschl. des Ports des smtp-relayservers eintragen. In diesem Fall lautet der korrekte Eintrag 'smtp.gmail.com:587' Damit ist die Installation und die Vorkonfiguration von Postfix abgeschlossen Schritt 3 Postfix konfigurieren Die Konfigurationsdateien von 'Postfix' befinden sich im Verzeichnis '/ect/postfix'. Von der Hauptkonfigurationsdatei 'main.cf' wird zunächst eine Sicherheitskopie erstellt Im nächsten Schritt wird 'main.cf' editiert. root@homesrv:~# cd /etc/postfix/ root@homesrv:/etc/postfix# cp main.cf main.cf.org root@homesrv:/etc/postfix# nano main.cf Originalinhalt 'main.cf' # See /usr/share/postfix/main.cf.dist for a commented, more complete version # 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 (Ubuntu) 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 Stand: 06.10.15 - Seite 10 - Ersteller: Stefan W. Lambert
readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key 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 = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = HomeSrv alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mydestination = HomeSrv.mynet.home, HomeSrv, localhost.localdomain, localhost relayhost = smtp.gmail.com:587 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 geänderte 'main.cf' # See /usr/share/postfix/main.cf.dist for a commented, more complete version # 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 (Ubuntu) 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 /usr/share/doc/postfix/tls_readme.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = HomeSrv Stand: 06.10.15 - Seite 11 - Ersteller: Stefan W. Lambert
alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = HomeSrv.mynet.home, HomeSrv, localhost.localdomain, localhost # TLS parameters smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls = yes smtp_tls_security_level = may # smtpd_tls_security_level = may # smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # smtpd_tls_ask_ccert = yes # # ---------------------- Mailrelay Anfang ----------------------- smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination relayhost = smtp.gmail.com:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous # ---------------------- Mailrelay Ende ------------------------- 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 Die farblich markierten Einstellungen müssen gemäß den Gegebenheiten im Heimnetzwerk angepasst werden. Anmerkung für die Bedienung des Texteditors: zum Speichern: gleichzeitiges Drücken der <strg>-taste und 'o' zum Schließen des Editors: gleichzeitiges Drücken der <strg>-taste und 'x' Stand: 06.10.15 - Seite 12 - Ersteller: Stefan W. Lambert
Schritt 4 Datei 'sasl_passwd' erstellen Die Datei 'sasl_passwd' enthält die Informationen, die Postfix zur Authentifizierung am smtp-mailrelay benötigt. Diese Informationen sind: Domainname des smtp-mailrelays Google Benutzername root@homesrv:/etc/postfix# nano /etc/postfix/sasl_passwd Inhalt 'sasl_passwd' smtp.gmail.com [gmailbenutzer]:[passwort] Beispiel smtp.gmail.com mymail@gmail.com:01234567890 Da es sich bei den o.g. Daten um sensible Zugangsinformationen handelt, werden die Dateirechte von 'sasl_passwd' so gesetzt, dass nur der 'root'-benutzer Zugriff darauf hat. Im letzetn Schritt wird aus 'sasl_passwd' mit Hilfe des Programms 'postmap' die, für Postfix lesbare. Datei 'sasl_passwd.db' erstellt root@homesrv:/etc/postfix# chmod 600 /etc/postfix/sasl_passwd root@homesrv:/etc/postfix# postmap /etc/postfix/sasl_passwd Schritt 5 Postfix neustarten Die Konfiguration von Postfix ist abgeschlossen, als letzter Schritt wird Postfix neugestartet. root@homesrv:/etc/postfix# service postfix restart Stand: 06.10.15 - Seite 13 - Ersteller: Stefan W. Lambert
3. Funktionstest durchführen Zum Testen des smtp-mailrelays wird eine Testnachricht über die Kommandozeile verschickt. Schritt 1 Mailbody erstellen root@homesrv:/etc/postfix# echo "Dies ist eine Testemail" > ~/EmailTxT Mit diesem Befehl wird im Homeverzeichnis von 'root' die Textdatei 'EnailTxT# mit dem Inhalt 'Dies ist eine Testemail' erstellt. Schritt 2 Testemail versenden root@homesrv:/etc/postfix# mailx -s "Testnachricht" kontakt@stefanius.de < ~/EmailTxT Der Befehl versendet eine Email an 'kontakt@stefanius.de' mit dem Betreff 'Testnachricht' und dem Text 'Dies ist eine Testemail' Schritt 3 syslog überprüfen root@homesrv:/etc/postfix# tail /var/log/syslog grep postfix Der Befehl zeigt die letzten Einträge des syslogs hat alles funktioniert, lautet die Ausgabe des Befehls: Oct 5 16:48:53 HomeSrv postfix/smtp[2994]: BA711D60A7F: to=<kontakt@stefanius.de>, relay=smtp.gmail.com[74.125.133.108]:587, delay=2.3, delays=0.14/0.19/0.85/1.2, dsn=2.0.0, status=sent (250 2.0.0 OK 1444056533 gc8sm15068711wib.2 - gsmtp) Postfix hat über 'smtp.gmail.com[74.125.133.108]:587' die Nachricht erfolgreich versendet 'status=sent (250 2.0.0 OK' Stand: 06.10.15 - Seite 14 - Ersteller: Stefan W. Lambert
Schritt 4 Überprüfen ob die Nachricht im Mailclient angekommen ist Die Nachricht ist angekommen => alles o.k. Stand: 06.10.15 - Seite 15 - Ersteller: Stefan W. Lambert