Minimaler MTA, der Mail lokal zustellt (für Cron)?

17

Auf meinem Laptop habe ich einen Cron eingerichtet, der einen wöchentlichen Job ausführt. Wenn es etwas zu berichten gibt, würde ich gerne eine E-Mail dafür bekommen. Momentan verwende ich KMail als MUA, die E-Mails aus dem Maildir-Verzeichnis unter lesen kann ~/.local/share/local-mail. Daher möchte ich, dass lokale E-Mails in diesen Ordner gesendet werden (mit einer Maildir-Struktur).

Ich hatte gehofft, dass es bereits ein einfaches Programm gibt, das eine sendmailSchnittstelle hat (die echo "$REPORT" | mail -s "$SUBJECT" "$ME"damit arbeiten kann). Das Installieren von exim oder das Weiterleiten von E-Mails an meinen Remote-Mailserver wird als Overkill angesehen.

Die Frage Einfachste Art, alle Mails vom Server weiterzuleiten? Scheint auf eine Fernweiterleitung abzustimmen, die nicht meinen Bedürfnissen entspricht (ich benötige eine lokale Zustellung). Dieser alte Gentoo-Thread endete damit, ein altes Skript in Perl zu erstellen. Sicherlich muss es ein durchdachtes, absolut einfaches Programm geben?

Irgendwelche Empfehlungen? Ich benutze Arch Linux.

Lekensteyn
quelle
Vorausgesetzt , was MTA Arch verwendet standardmäßig installiert ist und ausgeführt wird , können Sie nur verwenden , [email protected]und das Zeug sollte am Ende /var/spool/mail/userX; Sie können dies selbst überprüfen oder ein neues Konto erstellen, um dies bei Ihrem MUA zu überprüfen.
Goldlöckchen
2
Ein bisschen googeln brachte mich zu github.com/corecode/dma aka Dragonfly Mail Agent.
Tripleee
Bei @goldilocks Arch, einer minimalen Distribution, ist standardmäßig kein MTA installiert. /usr/bin/sendmailexistiert nicht und cron output landet in /dev/null.
Lekensteyn
@tripleee Ich bin auf das gestoßen, habe es aber ignoriert, als ich sah, dass SMTP und TLS erwähnt wurden. Vielen Dank für die Erwähnung, ich werde noch einmal einen Blick darauf werfen. hört nicht auf port 25 hört sich für mich gut an.
Lekensteyn
@tripleee Leider unterstützt dma Maildir nicht, nur Spool-Verzeichnisse /var/spool/mail.
Lekensteyn

Antworten:

7

Da ich kein vorhandenes kleines Programm finden konnte, habe ich beschlossen, ein eigenes zu schreiben. Ursprünglich hatte ich Folgendes:

#!/bin/bash
# Simple sendmail
# filename per spec at http://cr.yp.to/proto/maildir.html
rand=$((RANDOM % 1000))
msgname=$(date +%s).P$$R$rand.$(hostname | tr '/:' '\057\072')

# Safety measure: do not overwrite existing mail
set -o noclobber

cat > ~peter/".local/share/local-mail/inbox/new/$msgname"

Das hat funktioniert ... außer wenn der Benutzer, der das Skript ausführt, nicht "peter" ist. Der Nachfolger dieser Idee ist ein "kleines" C-Programm, Femtomail . Aus seiner README:

Femtomail - minimaler MDA mit Unterstützung von Maildir

femtomail ist ein minimaler Mail Delivery Agent (MDA) für lokale Mail. Mail wird von der Standardeingabe akzeptiert und in einer Maildir-Box eines Benutzers abgelegt. Diese Software ist für die Verwendung auf einem Einzelplatzrechner vorgesehen.

Remote Delivery, Daemonizing, Absenderverifizierung usw. sind nicht implementiert und werden aufgrund ihrer Komplexität nicht implementiert. femtomail wird nicht geschrieben, weil keine Mail-Software vorhanden war, sondern weil die vorhandene Software zu groß für die einfache Aufgabe war , Cron-Mail an den lokalen Benutzer zuzustellen .

Der Workflow von Femtomail:

  1. Ändern Sie den Prozessbenutzer und die Gruppe.
  2. Erstellen Sie eine neue Datei mit einem eindeutigen Dateinamen im Mail-Verzeichnis.
  3. Schreiben Sie einen ReceivedHeader in die Datei.
  4. Daten von der Standardeingabe an die Datei übergeben.
  5. Ausgang.

Der Quellcode und die Installationsanweisungen finden Sie unter https://git.lekensteyn.nl/femtomail/ .

Lekensteyn
quelle
1
Es wäre großartig, wenn femtomail Folgendes könnte: user @ localhost (oder den Hostnamen des lokalen Hosts) lesen und diesen Benutzer festlegen, die E-Mail entweder im Hauptverzeichnis oder in einem Standardverzeichnis schreiben. würde setuid Bits erfordern.
Gauteh
@gauteh Das ist schon weiter fortgeschritten und wahrscheinlich nicht für den Einsatz auf einem Einzelplatzrechner. Mehr Funktionen bedeuten größeren Code und eine größere Wahrscheinlichkeit von Fehlern. Was ist Ihr Anwendungsfall?
Lekensteyn
Auf jeden Fall, um es als vollständigen lokalen Mail-Zustellungsagenten zwischen Benutzern zu verwenden - ohne fest codierte Inhalte.
Gauteh
@gauteh Ich denke, Sie sind mit einem vollständigeren MDA wie Dovecot für diesen Anwendungsfall besser dran. Es steht Ihnen jedoch frei, Femtomail für Ihren Anwendungsfall zu patchen und bei Interesse sogar eine PR zu senden.
Lekensteyn