Beim Basteln eines Mailflow-Testers stand ich erstmalig vor dem Rätsel, eine Mail über einen oder mehrere MTAs zu versenden, die unbedingt auf eine Authentifizierung bestehen. Auskommen wollte ich mit einem einzigen Script, ganz ohne irgendetwas am System einstellen- oder verändern zu müssen.
Hier nun los resultados mit einigen Erklärungen zu den Basics… Weiterlesen →
14.01.2014 – Script fixes for more than one interface, sorry.
14.01.2014 – „mutt“-Script added
Mail mit „vnstati“In diesem Artikel möchte ich beschreiben, wie ein Traffic Report via Mail mit Bild von einer oder mehreren Interfaces als Collage an einen Empfänger versendet wird.
Die Collage enthält neben täglicher und monatlicher Daten auch eine Zusammenfassung sowie eine „Top 10“.
Für jedes Interface wird eine eigene E-Mail mit dem Betreff „Traffic Report, Interface X – Datum“ versendet.
Hierbei gehe ich von einem bereits konfigurierten Mail-System aus.
Getestet habe ich auf einem Ubuntu Server LTS sowie Debian Stable.
„vnstati“ erzeugt für „vnstat“ die Grafiken. Auch in der Command-Line ist „vnstat“ ein nützliches Tool, um Datenverbrauch zu analysieren: „man vnstat“. „imagemagick“ beeinhaltet das Paket „montage“ für die spätere Zusammenfassung der von „vnstati“ erzeugten Bilder. „mailutils“ und „sharutils“ werden für den Versand der Übersicht als Anhang benötigt.
Zuerst das Standard-Interface und die Bandbreite in der Konfiguration von „vnstat“ festlegen:
sudo nano /etc/vnstat.conf
„MaxBandwidth“ darf auch auskommentiert werden, um diese Funktion zu deaktivieren, falls erwünscht:
Interface "eth0"
MaxBandwidth 100
Nun für jedes Interface, für das eine Übersicht zur Verfügung stehen soll, eine Datenbank anlegen. Beispiel:
sudo vnstat -u -i eth0
sudo vnstat -u -i eth1
Das Script und Benutzung
Wie im Script zu sehen, werden vorab zwei Variablen angepasst:
Usage: ./script.sh
Vorab als ausführbar markieren: chmod +x script.sh
Das Script ist leise, erzeugt also keine Ausgabe, außer es treten Fehler auf.
Optional: Cronjob
Eine Ausführung als Cronjob jeden Tag um 00:00 Uhr würde so funktionieren:
crontab -e
Mit Inhalt:
0 0 * * * /path/to/script.sh
Optional (bei Fehlern): Alternatives Script mit „mutt“
Da es zu Problemen mit der Dekodierung des Anhangs kommen kann, habe ich ein alternatives Script geschrieben, welches „mutt“ anstatt „mail“ und „uuencode“ verwendet. Falls noch nicht geschehen, „mutt“ jetzt installieren:
sudo apt-get install mutt
Das Script unterscheidet sich lediglich in der Art des Versands:
Ein kleines Snippet, um Mails mit Anhang via „mail“-Befehl zu versenden.
Unter Debian und Ubuntu das Paket „sharutils“ installieren. Hiermit können Dateien für den Mail-Versand vorbereit werden:
sudo apt-get install sharutils
Das Format lautet: uuencode lokale_datei.any empfaenger_dateiname.any.
Die lokale Datei kann also unter anderem Namen versendet werden.
Hier ein paar Beispiele, angefangen mit dem einfachen Versenden einer Datei:
uuencode datei.jpeg datei.jpeg | mail empfaenger@domain.tld
Mit Nachricht – alternativ: „echo“:
(cat Nachricht; uuencode datei.jpeg datei.jpeg) | mail empfaenger@domain.tld
Mit Absender und Betreff:
(cat Nachricht; uuencode datei.jpeg datei.jpeg) | mail -a "From: Absendername " -s "Betreff" empfaenger@domain.tld
Mit Absender, Betreff und UTF-8 Encoding („multiple header“):
(cat Nachricht; uuencode datei.jpeg datei.jpeg) | mail -a "`echo -e "Charset: UTF-8\nFrom: Absendername "`" -s "Betreff" empfaenger@domain.tld
Alternativen
Heute, dem 15.01.2014, möchte ich noch moderne Alternativen ergänzen, angefangen mit „mutt“, welches MIME-konform ist:
sudo apt-get install mutt
Beispiel mit Nachricht und Betreff:
echo "Nachricht" | mutt -s "Betreff" empfaenger@domain.tld -a datei.jpeg
Zweite Alternative mit „uuenview“ – Kann quasi alles, was „uuencode“ bietet, ist jedoch wie „mutt“ MIME-konform:
sudo apt-get install uudeview
Beispiel mit Nachricht und Betreff („-a“ für Eingabe der Nachricht via „stdin“:
cat Nachricht | uuenview -b datei.jpeg -m empfaenger@domain.tld -a