Posts tagged linux

Postfix Relay Rechner über anderen SMTP

Eigener Rechner für Email-Versand

ISP’s, DynDns und Spamhouse

Leider fragen immer mehr Email Dienstleister die Daten von Spamhouse und Co. ab. Das ist durchaus sinnvoll um vor Spam zu schützen, allerdings trifft es auch diejenigen die eigentlich einfach nur Emails versenden wollen um ihre Anwendungen zu testen.

Eine Alternative dazu ist natürlich das Staging-System einfach auf einen seiner Server zu hosten – damit hat man das Problem nicht mehr, dass die Emails abgewiesen werden. Es geht aber auch anders. Denn man kann seinen eigenen Rechner/Server so konfigurieren, dass die Emails nicht mehr von diesem Rechner aus gesendet werden sondern von dem Rechner, auf dem man seine öffentlichen Webseiten liegen hat. Setzt natürlich vorraus, das man mindestens einen virtuellen Server hat, den man konfigurieren kann oder der Dienstanbieter Ihres SMTP nicht nach IP-Adressen aus z.B. Spamhouse scannt.

Im Grunde genommen ist der Vorgang aber der Gleiche.

Die Konfiguration des eigenen Rechners

Eine Standard-Konfigurationsdatei

Der Einfachheit halber kurz und bündig: (/etc/postifx/main.cfg)

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
myhostname = debian.local
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = debian.local, localhost.local, localhost
relayhost =
relay_domains = $mydestination
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

In dieser Konfiguration ist der Eintrag relay_domains = $mydestination besonders wichtig. Er verhindert, dass man von außen Emails versenden kann. Was bei geschlossenem Port 25 aber genauso wenig möglich ist.

Der SMTP-Server des Dienstanbieters

Damit sich unser Rechner also mit unserem SMTP des Dienstanbieters verbinden kann ändert man folgenden Eintrag:

relayhost = [mail.domain.tld]

Die Klammern sorgen dafür, dass die Nachricht am MX-Record des Anbieters vorbei direkt zum SMTP geht, es liefert also die IP des Hosts. Würde man die Klammern weglassen würde der MX-Record abgefragt.

Jetzt haben wir schon mal dafür gesorgt, dass unsere Emails in die richtige Richtung transferiert werden.

Authentifizierung

Müssen wir noch dafür sorgen, dass sich unser Rechner am SMTP authentifiziert.

Um das zu bewerkstelligen brauchen wir zwei Dinge eine Datei sasl_password, die leider das Passwort im Klartext speichert, und das Programm postmap welches die Datenbanken für Postfix erzeugt.

Lange Rede kurzer Sinn – hier die Befehlszeilen:

cd /etc/postifx
sudo echo "mail.domain.tld myname@domain.tld:password" > sasl_password
sudo chmod 0600 sasl_password
sudo postmap sasl_password

Die „Datenbank“ ist jetzt angelegt und die Verbindungsdaten hinterlegt. Jetzt müssen wir nur noch dafür sorgen, dass Postfix die Datenbank bei der Verbindung zum SMTP verwendet. Dazu ergänzen wir folgende Einträge in der /etc/postfix/main.cfg.

smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous noplaintext
smtp_sasl_password_maps = hash:/etc/postfix/sasl_password

Je nachdem ob der Server Verschlüsselung für das Passwort verwendet kann man es auch ohne noplaintext probieren.

Canonical Names, From und Namenszwang

Einige ISP’s verbieten es unter fremden Namen Emails zu versenden. Für unseren Fall könnte man das eventuell auser Acht lassen aber der Vollständigkeit halber gehören die Canonical Names einfach dazu vor allem dann wenn man Arcor, Web oder GMX konfigurieren will.

Wir führen folgende Befehlszeilen wie am Beispiel der Authentifizierung aus:

cd /etc/postfix
sudo echo "www-data myname@mail.domain.tld" > sender_canonical
sudo postmap sender_canonical

www-data ist der Benutzer welcher die Emails absendet. Kann z.B. auch root oder your-username sein.

Mehrere Einträge schreibt man einfach untereinander.
Danach nur in der /etc/postfix/main.cfg bescheid geben:

sender_canonical_maps = hash:/etc/postfix/sender_canonical