Mit Procmail email-attachment (xlsx) in Ordner ablegen

mail
german

#1

Hallo Forum,

ich muss bei emails an eine bestimmte Adresse die attachments (Excel-Sheets) filtern und sie in einem bestimmten Ordner ablegen.
In diesem Ordner verarbeitet ein weiteres Programm diese Dateien und archiviert sie anschließend.

Mein Ansatz war es, dies über procmail zu realisieren. (Falls jemand andere Ideen hat … Gerne).
Wir verwenden UCS (Aktuell geupdatet 4.1), allerdings noch mit Cyrus und OpenXchange OX Appsuite 7.8.

Zunächst würde ich gerne wissen, wie ich procmail einbinde.
Wenn ich das richtig verstanden habe, sollte dies über einen Eintrag in die main.cf sowie über einen Eintrag in die master.cf und die Datei procmail.rc realisiert werden können.
Auf einem älteren Debian System hatte ich das früher schon mal realisiert.

Bei UCS wird dies ja etwas anders umgesetzt. Hier würde ich in /etc/univention/templates/files/etc/postfix nach den entsprechenden Dateien suchen.
Wer hat so was schon mal umgesetzt und wie?

Vielen Dank im Voraus


Kopano - Anhänge automatisch auf Festplatte speichern
#2

Hat irgendjemand eine Idee?


#3

Moin,

die »master.cf« sollte nicht so das Problem sein, weil Sie hier schlicht eine Zeile ergänzen müssen. Für die »main.cf« ist es ebenfalls einfach, sofern Sie nur Parameter modifizieren müssen, die ansonsten nirgends in »/etc/univention/templates/files/etc/postfix/main.conf.d« angefasst werden.

Was Sie tun müssen, um Ihre Änderungen im UCS-Template-System unterzubringen in Kürze:

Zuerst legen Sie Dateien im UCS-Template an, die den von Ihnen benötigten Inhalt enthalten. Die Ergänzungen für die »master.cf« landen z.B. in »/etc/univention/templates/files/etc/postfix/master.cf.d/99_mychanges«, die für die »main.cf« in »/etc/univention/templates/files/etc/postfix/main.cf.d/99_mychanges«.

Als nächstes müssen Sie dem Template-System mitteilen, dass diese Schnippsel auch verarbeitet werden sollen. Dazu dienen die Dateien in »/etc/univention/templates/info«. Hier kann eine Datei durchaus mehrere Schnippsel registrieren. Legen Sie z.B. die Datei »/etc/univention/templates/info/mychanges.info« an. Den Inhalt kann man sich von »univention-mail-postfix.info« abschauen. Beispiel:

[code]Type: subfile
Multifile: etc/postfix/main.cf
Subfile: etc/postfix/main.cf.d/99_mychanges

Type: subfile
Multifile: etc/postfix/master.cf
Subfile: etc/postfix/master.cf.d/99_mychanges[/code]

Als Letztes lassen Sie die Dateien neu erzeugen:

ucr commit /etc/postfix/{main,master}.cf

Probieren Sie doch erst mal, es damit hinzubekommen, denn der Rest ist dann nicht mehr Univention-spezifisch.

Gruß,
mosu


#4

Zunächst mal vielen Dank für die Rückmeldung.

Ich habe mich an die Vorgehensweise gehalten und die entsprechenden Änderungen vorgenommen.
Die Attachments werden erkannt und in den vorgesehenen Ordner abgelegt.

So weit so gut.

Das, was noch nicht funktioniert ist die anschließende Auslieferung an das Imap-System (Hier: dovecot), bzw. die Zustellung in die Mailboxen.

Hier meine /etc/univention/templates/files/etc/postfix/master.cf.d/99_mychanges:

procmail unix - n n - - pipe
flags=DORX user=dovemail argv=/usr/bin/procmail -t -o SENDER=${sender} -m USER=${user} EXTENSION=${extension} RECIPIENT=${recipient} /etc/procmailrc

und die /etc/univention/templates/files/etc/postfix/main.cf.d/99_mychanges:

virtual_transport = procmail
mailbox_command = /usr/bin/procmail
procmail_destination_recipient_limit = 1

Zur Ergänzung die procmail.log-Datei:

procmail: [23158] Thu Jun 23 13:27:57 2016
procmail: Assigning “DELIVERMAIL=/usr/lib/dovecot/deliver”
procmail: Assigning “DAEMON=MAILER-DAEMON@ucs.domain-test.loc”
procmail: Assigning “SENDMAIL=/usr/sbin/sendmail -oi -t”
procmail: Assigning “INBOX=/usr/lib/dovecot/deliver -f vorname1.nachname1@domain.com -d vorname2.nachname2”
procmail: Executing “echo,/home/dpr/reports”
procmail: Assigning “ATTACH=/home/dpr/reports”
procmail: Match on “^To: vorname2.nachname2@domain-test.loc
procmail: Executing “munpack,-q,-C,/home/dpr/reports”
munpack: reading from standard input
procmail: Assigning “LASTFOLDER=munpack -q -C /home/dpr/reports”
tempdesc.txt: File exists
procmail: Executing “/usr/lib/dovecot/deliver,-f,vorname1.nachname1@domain.com,-d,vorname2.nachname2”
procmail: Error while writing to “/usr/lib/dovecot/deliver”
procmail: Program failure (75) of “/usr/lib/dovecot/deliver”
procmail: Assigning “LASTFOLDER=/usr/lib/dovecot/deliver -f vorname1.nachname1@domain.com -d vorname2.nachname2”
procmail: Assigning “HOST”
procmail: HOST mismatched “ucs”
Subject: testmail
Folder: /usr/lib/dovecot/deliver -f vorname1.nachname1@domain.com -d vorname2.nachname2 67894

Wie müsste die deliver Anweisung angepasst werden, damit die Auslieferung in die Inboxes funktioniert, oder liegt der Fehler woanders?


#5

Habs noch hinbekommen.

In der procmailrc selber war ein Schreibfehler.

Jetzt lüpt et.

Hier noch die korrekte procmailrc:

[color=#808000]# Procmail
DROPPRIVS=YES
LOGFILE="/var/log/procmail.log"
VERBOSE=on

DELIVERMAIL="/usr/lib/dovecot/deliver"
SENDMAIL="/usr/sbin/sendmail -oi -t"

Mailbox-Zustellung

INBOX="$DELIVERMAIL -d $USER"

ATTACH=echo /home/dpr/reports
:0 c

an INBOX zustellen

:0 w
| $INBOX[/color]