Mail auf der Konsole versenden

Wenn man einen Server mit einem Mail Transfer Agent wie Postfix betreibt, kann man von diesem auch Mails versenden. Auf der Konsole ist dies dabei mit dem Kommando mail möglich, welches sich im Paket mailutils befindet. Mit dem Kommando kann mittels:

echo "Nachricht" | mail -s 'Betreff' mail@example.com

eine Mail versandt werden. Natürlich können auch lokale Konten bespielt werden:

echo "Nachricht" | mail -s 'Betreff' root

Damit wird in diesem Fall dem Nutzer root eine Mail gesendet.

Postfix Version ermitteln

Um die Versionsnummer eines installierten Postfix zu ermitteln, reicht es im Terminal folgendes einzugeben:

postconf -d mail_version

Anschließend erhält man eine Ausgabe nach dem Schema:

mail_version = 2.11.0

Da die Parameter aus der main.cf ausgelesen werden, ist es wichtig den Parameter -d anzugeben. So werden nicht die überschriebenen Werte zurückgegeben, sondern die Standardwerte, in diesem Fall die korrekte Versionsnummer.

Postfix auf anderen Port mappen

Standardmäßig hört der Mail Transfer Agent Postfix auf dem Port 25. Möchte man nun das Postfix auch auf einem zusätzlichen Port hört, so muss man die “/etc/postfix/master.cf”-Datei bearbeiten. Dort sucht man die Zeile:

smtp      inet  n       -       -       -       -       smtpd

Unter der Zeile fügt man die Zeile:

587      inet  n       -       -       -       -       smtpd

hinzu. Anschließend muss der Dienst noch neugestartet werden:

service postfix restart

Damit hört Postfix neben Port 25 nun auch auf Port 587, dem bevorzugten Port für die Maileinlieferung von Clients.

Bestimmte Mailadresse unter Postfix blockieren

Unter Umständen möchte man seine eigene Blacklist direkt auf dem Mailserver führen. Für diesen Zweck gibt es unter Postfix die Einstellung “check_sender_access”. Dazu bearbeitet man die Datei “/etc/postfix/main.cf” mittels des gewünschten Editors:

nano /etc/postfix/main.cf

In der Abteilung “smtpd_recipient_restrictions” wird der Eintrag

check_sender_access hash:/etc/postfix/sender_access

ergänzt. In die neu anzulegende Datei “sender_access” werden nun Einträge nach folgendem Schema definiert.

webmaster@example.org REJECT
spam@example.org REJECT
spam@example.com REJECT

Mittels “postmap” wird anschließend die binäre Repräsentation erzeugt und mittels “reload” die Konfiguration neu geladen.

postmap /etc/postfix/sender_access
service postfix reload

Damit werden Mails von den definierten Adressen immer abgewiesen.

Mailserver mit Postgrey gegen Spam schützen

Vor einiger Zeit beschrieb ich wie man einen Mailserver unter Ubuntu mittels Postfix und Dovecot aufsetzt. Der dort installierte Server ist, in der Lage Mails zu senden und zu empfangen. Allerdings enthält er keinerlei Maßnahmen zum Schutz vor unerwünschten Mails. An dieser Stelle setzt Postgrey, eine Greylisting Implementierung für Postfix, an. Beim Greylisting werden Mails von einem unbekannten Sender erst einmal mit einem temporären Fehler beantwortet. RFC konforme Mailserver senden die Mail nach einer Verzögerung nochmal. Beim Spamversendern ist dies meist nicht der Fall, womit der Spam nicht im System auftaucht. Die Installation ist dabei relativ einfach:

apt-get install postgrey

Nach der Installation muss die “/etc/postfix/main.cf” Datei angepasst werden. Der Zeile “smtpd_recipient_restrictions” wird dabei der Wert “check_policy_service inet:127.0.0.1:10023” hinzugefügt. Nachdem der Service mittels:

service postfix restart

neugestartet wurde, ist das Greylisting aktiv. In der Logdatei “/var/log/mail.log” findet man, sobald man eine Mail von einem unbekanntem Sender bekommt folgende Zeile:

Oct 10 10:32:39 service postfix/smtpd[22287]: NOQUEUE: reject: RCPT from mail.example.org[178.19.71.5]: 450 4.2.0 <mailinglists@example.com>: Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/example.com.html; from=<mail.example.org> to=<mailinglists@example.com> proto=ESMTP helo=<mail.example.org>

Wenn die Mail erneut empfangen wird und die Greylistingzeit vorbei ist, wird Postgrey die Mail annehmen. Möchte man die Greylistingzeit ändern, so muss die Datei “/etc/default/postgrey” bearbeitet werden. Für eine Verzögerung von 60 Sekunden könnte das ganze dann wie folgt aussehen:

POSTGREY_OPTS="--inet=127.0.0.1:10023 --delay=60"

Natürlich muss der Service für diese Änderung neugestartet werden.