Mail an NAS und den Anhang verwerten

DarkStiller

Benutzer
Mitglied seit
16. Aug 2019
Beiträge
1
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe die dumme Idee eine Mail an mein NAS zu schicken mit einem passwortgeschützten Archiv im Anhang (*.7z-Datei z.B.), welches ich gerne in einen bestimmten Ordner entpackt haben möchte. Das Passwort ist dabei immer gleich. Ich hatte schon andere Themen hier gelesen mit Mail-Empfang und das dies möglich sei. Da die Synology NASes sehr mächtig sind, dachte ich, dass eventuell dieser Schritt auch möglich ist.
Hat jemand sowas schon einmal gemacht? Oder zumindest Teile der Operation?

Hintergrund: Meine Firma stellt mir Dokumente digital zur Verfügung, die sensible Daten zu meiner Person enthalten. Ein Versand dieser Dokumente ist nur verschlüsselt gestattet laut Betriebsanweisung (passwortgeschütztes Archiv). Die Daten werden von mir in unregelmäßigen Abständen manuell entpackt und abgespeichert. Die Arbeit würde ich mir gerne sparen.
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Hallo DarkStiller und herzlich willkommen hier im Forum :D

Was für eine DS hast du?
Wie kommt die Mail auf deine DS? Hast du den Mailserver installiert? Wahrscheinlich geht es auch mit der MailStation, was ich aber mangels Installation nicht getestet habe. Letztendlich müssen die Mail in irgendeinem Ordner auf der DS liegen.

Wie du hier evtl. schon gelesen hast, gibt es auch ein Perlskript für diesen Zweck, das benötigte Modul konnte ich aber auf meiner DS nicht nachinstallieren. An Stelle dessen wird hier munpack verwendet.

Jetzt zur Umsetzung:
  • bei mir DS716+, also x86_64 Umgebung
  • installierter MailServer, empfange also E-Mails auf meine Domain / die liegen im Home-Ordner eines jeden Users im Ordner .Maildir
  • man benötigt das Programm munpack (für x86_64 einfach hier laden und aus dem Ordner "bin" entpacken - es wird nur die einzelne Programmdatei benötigt). Wenn man eine DS mit einer abweichenden CPU hat, müsste man munpack für die passende CPU finden oder selbst kompilieren …
  • das Skript z.B. mit dem Texteditor auf der DS abspeichern und auf der Shell mit chmod +x ausführbar machen
  • im Skript die persönlichen Werte anpassen
  • das Skript über den Aufgabenplaner aufrufen


Anhang anzeigen MailAttachmentParser.zip
Ich hoffe, es hilft dir etwas weiter.

Rich (BBCode):
#!/bin/sh
# /volume1/homes/admin/script/MailAttachmentParser.sh
# durchsucht den angegebenen Quellordner nach E-Mails mit 7z-Dateianlage, extrahiert und entpackt diese in den Zielordner

# PARAMETER ANPASSEN:
MAILDIR="/volume1/homes/admin/.Maildir/cur"         # Quellverzeichnis
DESTDIR="/volume1/homes/admin/dump/"                # Zielverzeichnis
DELDIR="/volume1/homes/admin/.Maildir/.Trash/cur"   # Löschverzeichnis
DelMail="no"                                        # "yes" um abgearbeite E-Mails zu löschen
munpack="/volume1/homes/admin/script/mailunpack"    # Pfad zu munpack
unzipPW=""                                          # Kennwort zum entpacken

#----------------------------------------------------------

for i in $(find "$MAILDIR" -type f) 
    do
        filename=$(basename $i)
        if  ( cat "$i" | grep -q "base64" ) && ( cat "$i" | egrep -q "name=.*\.7z" ) ; then # prüfen, ob "base64" und "name=*.7z" in der Mail vorkommen

        # temporäres Arbeitsverzeichnis erstellen
            work_tmp=$(mktemp -d -t tmp.XXXXXXXXXX)
            trap 'rm -rf "$work_tmp"; exit' EXIT
            
        # Mail extrahieren:
            cp $i $work_tmp/$filename
            $munpack $work_tmp/$filename -C $work_tmp

        # Archiv nach Zielordner entpacken
            for z in $(find "$work_tmp" -type f -name "*.7z")
                do
                    7z e $z -o$DESTDIR -p${unzipPW} -aou
                done
        fi
        if [ $DelMail = "yes" ]; then  
            mv $i $DELDIR
        fi
        rm -rf "$work_tmp"
    done
	
exit
 
Zuletzt bearbeitet:

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
native Bash-Version des MailAttachmentParsers

Falls es doch noch einmal von jemanden gebraucht werden sollte, hier die native Bash-Version ohne externe Binarys. Eine große Hilfe dafür war dieses Bashskript.

Beim Testen hatte ich mit CSV-Dateien Probleme, da diese nicht base64-codiert waren. Außerdem habe ich nicht abgesichert, wenn ganze Ordner als gepackte Datei gemailt werden. Archive werden entpackt, sofern sie die Dateiendung .7z oder .zip haben.

Download: Anhang anzeigen MailAttachmentParser_nativ.zip

Das Skript ist leider zu groß, um es in Textform posten zu können.
 

stevios

Benutzer
Mitglied seit
10. Nov 2013
Beiträge
43
Punkte für Reaktionen
0
Punkte
6
Vielen Dank, ich nutze das Skript nun auf meiner DS. Nur die Ordner mussten angepasst werden, da sie nun wohl woanders liegen (/MailPlus/@local ... ).
 

geimist

Benutzer
Sehr erfahren
Maintainer
Mitglied seit
04. Jan 2012
Beiträge
5.356
Punkte für Reaktionen
1.162
Punkte
234
Ich benutze nur die MailStation und nicht MailPlus - daher die abweichenden Ordner. Schön zu lesen, dass es auch mit MailPlus so funktioniert.
 

Kritter

Benutzer
Mitglied seit
17. Dez 2021
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
vielen Dank für das Script. Es ist echt eine Bereicherung, vor allem im Zusammenspiel mit einem DMS.
Ich habe zur Zeit nur ein Problem. Sobald ein Anhang Sonderzeichnen enthält (ÄäÜü : etc..) werden die Anhänge nicht sauber extrahiert. Gibt es eine neuere Version? Habe leider hier noch auf github was gefunden.

Gruß
André
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat