Der Pilgermaske Blog

der andere blog - Willkommen!

Mailx: Mail von Konsole

- Veröffentlicht unter Systeme von

Eigentlich wollte ich schon immer Emails von einer Linux Konsole verwalten können, aber so ganz geschmeidig ging das nie. Jetzt habe ich mir einfach mal Zeit genommen und wieder ein bisschen gebastelt. Heraus kam dieser Artikel, der den Versand von Emails mit Mailx und TLS/SSL auf Ubuntu 14.04 beschreibt.

Der erste Schritt der Verwirrung war immer, welchen Konsolen Emailer ich überhaupt nehmen soll. Pine, Alpine, Mutt, Mailx, … – genug, es reicht! Letztlich habe ich mich für Mailx entschieden (wobei Mutt vergleichbar ist und eine vergleichbare Konfiguration hat!).

Also folge erstmal diesen Beispiel und installiere:

aptitude install heirloom-mailx

Gehe in das /home Verzeichnis des gewählten Anwenders (in diesen Artikel ‘otto’), unter dem mailx funktionieren soll und lege eine Datei .mailrc an. Beachte, dass diese Datei mit user:group deinen gewählten Anwender (otto) gehören sollte und mit chmod 600 auch nur dieser die Datei lesen oder bearbeiten kann. In dieser Datei werden Passwörter stehen! Beachte den Punkt zu Beginn des Dateinamens: die Datei ist unsichtbar und kann mit ls -al gesehen werden, bearbeiten wie gewohnt.

In die /home/otto/.mailrc kannst Du grundlegende Einstellungen von mailx hinein kopieren (wenn nicht vorhanden):

# Default .mailrc
# Set prompt string
set prompt="& "
# Indentprefix is used for quoting messages
set indentprefix="> "
# Assume 20 lines per screen
set screen=20
# Ask for CC before sending the message
set askcc
# Use '.' to terminate composition of messages
set dot
# Emulate mailx's behaviour
set mailx
# Preserve aborted messages in 'dead.letter'
set save appenddeadletter
# Hold read or saved messages in the system mailbox
set hold
# Display only these headers:
retain from to subject cc reply-to date

Mit ein wenig Englisch sind diese Optionen leicht nachvollziebar: Prompt- Zeichen setzen, Frage nach CC Empfänger beim Emailschreiben, Abschluss und Versand der Email durch einen dot/Punkt, usw.. Unter diese Allgemeine Konfiguration setzen wir unsere Anwender- bezogene Emailkonten Konfiguration:

account postfach1 {
set folder=imaps://otto@beispiel.org@imap.beispiel.org
set password-otto@beispiel.org@imap.beispiel.org="mein$passwort"
set smtp-use-starttls
set smtp=smtp://smtp.beispiel.org:587
set smtp-auth=login
set smtp-auth-user=otto@beispiel.org
set smtp-auth-password="mein$passwort"
set from="Otto B. Kowalsky <otto@beispiel.org>"
}

Dann auf der Konsole einfach mailx -A postfach1 aufrufen. Das Mailx Kommando ‘help’ zeigt das grundlegende Mail Menü (senden, löschen, antworten) und ‘list’ die vollständige Liste der Kommandos. Raus kommt Admin wieder mit ‘exit’.

Wie die Bezeichnung ‘account postfach1’ schon andeutet, können natürlich mehrere Konten hinterlegt und beim Start von Mailx entsprechend gewählt werden.

Lass Dich nicht durch die ‘set folder’ Option und dem doppelten Domänen- Namen verwirren: Wenn die Anmeldung am Mailserver mit kompletter Mailadresse geschehen muss, steht vor dem IMAP/SMTP Mailserver- Namen (imap/smtp.beispiel.org) die Email- Adresse. Wenn nicht: Nur der reine Anmeldenamen.

Beachte, dass wir hier mit verschlüsselten Zugängen (imapS, starttls) arbeiten. Deswegen kann ein Mailserver ‘localhost’ (wenn z.B. Mailx auf einem Mailserver eingerichtet wird) – statt dem vollen FQDN Mailservernamen – einen Fehler hervorbringen, weil in den TLS/SSL Zertifikaten bestimmt nicht der ‘localhost’ eingetragen ist. Wenn doch: Schäm Dich!

Problems?

  • Wer DKIM auf seinen Mailserver einsetzt, sollte prüfen, ob beim Empfänger der DKIM check noch erfolgreich ist – einfach mal eine Email an ein google Konto schicken und den header der Email prüfen.

  • Auch wenn sich manche Admina daran stören werden, dass in der .mailrc ein Passwort steht: Die Alternative wäre, dass mailx bei Bedarf nachfragt, aber dann stehen die Passwörter in Klartext in der shell history! Einfach mal den Befehl ‘history’ in der Konsole eingeben. Besser .mailrc.

  • Achte auf einen korrekten from= Eintrag! Es gibt Restrictions auf Emailserver und Spamfilter die diese ‘Absender’ sehr genau prüfen!

  • Mailx wählt das Encoding selbständig, je nach dem, welche Zeichen es (nicht) erkennt. HTML Emails gehen nur, wenn ein HTML Text zum versenden übergeben wird. Gib’ in der Linux Konsole den Befehl ‘set’ ein – die locale (Sprachumgebung), welche dort angezeigt wird, ist für Mailx entscheidend.

  • Hier mal die header- Ausgabe einer, mit mailx versandten Email:

    User-Agent: Heirloom mailx 12.5 6/20/10 MIME-Version: 1.0 Return-Path: otto@beispiel.org Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit

  • Wenn Du die .mailrc vorbereitet jeden Anwender auf deinen Rechner zur Verfügung stellen willst, kann eine .mailrc in den Ordner /etc/skel kopiert werden – jeder neu(!) erstellte Anwender auf deinen Rechner bekommt dann die vorbereitete .mailrc in seinen /home Ordner kopiert. Beachte dann einen sprechenden Passwort- und Email- Platzhalter für deine Anwender!

  • Wem die Zertifikats- Abfragen beim Start von Mailx auf die Nerven gehen, kann den Eintrag set ssl-verify=ignore in der .mailrc setzen.

  • Der Eintrag set pipe-text/html=”w3m -dump -T text/html” in der .mailrc ermöglicht, mit dem w3m Konsolen Browser auch HTML Emails vollwertig anzuschauen. Installiere vorher w3m auf dem Rechner.

  • Eventuell hilfreiche Kommandos für eine schnelle Konfigurations- Übersicht in der Mailx Konsole sind ‘set’ und ‘account’.

So, Kaffee. Have fun …

Hier ein Beispiel für eine umfangreichere Konfiguration

Comments