.png)
Ich versuche, einen Postfix-Mailserver mit sehr geringem Datenverkehr einzurichten, und zwar mit:
- Ein einfacher Inhaltsfilter (http://www.postfix.org/FILTER_README.html#simple_filter). Es ist viel einfacher als die erweiterte Version und der Verkehr ist gering.
- Dovecot als Zustellagent. (Aufgrund von Maildir-Kontingenten und Sieve-Filtern)
always_bcc
Kopien aller gesendeten E-Mails aufzubewahren. (Geschäftsregeln)
Meine relevanten Konfigurationen sind:
master.cf
smtp inet n - y - - smtpd
-o content_filter=filter:dummy
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
relay unix - - y - - smtp
-o syslog_name=postfix/$service_name
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
postlog unix-dgram n - n - 1 postlogd
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
filter unix - n n - 10 pipe
flags=Rq user=filter null_sender=
argv=/var/spool/filter/scripts/filter.sh -f ${sender} -- ${recipient}
dovecot unix - n n - - pipe
flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
main.cf (nur relevante Teile)
always_bcc = [email protected]
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
/var/spool/filter/scripts/filter.sh
#!/bin/sh
/usr/bin/cat | /var/spool/filter/scripts/mailfilter | /usr/sbin/sendmail -G -i "$@"
exit $?
- Alle meine Benutzer haben E-Mails in "(Initial)[email geschützt]" Format
- Es gibt Sicherheitsgruppen, die als Rollen fungieren und jede hat E-Mails in "[email geschützt]" Format.
- Grundsätzlich fungiert die E-Mail-Rolle als Alias für mehrere Benutzer.
So kann ich dieselben Rollen/Gruppen wiederverwenden, die ich zum Festlegen von Berechtigungen verwende, und muss die Benutzer nicht direkt verwenden.
Zum Beispiel
- meine Benutzer-E-Mail ist[email geschützt]
- Ich bin Mitglied der Rolle ITDepartment ([email geschützt])
- Ich bin Mitglied einiger anderer Rollen, aber meine Hauptrolle ist „IT-Abteilung“
- Da ich Mitglied dieser Gruppe/Rolle bin, habe ich bestimmte Privilegien, wie die anderen Mitglieder und jede E-Mail an[email geschützt]wird mich und die anderen Mitglieder erreichen.
So weit, so gut... Aber mein Chef will, dass jede Mail, die ich versende, den[email geschützt](Rollen-)Adresse statt[email geschützt](Benutzer). Das bedeutet, dass für jede gesendete E-Mail die E-Mail-Adresse der Hauptrolle und nicht die des Benutzers verwendet wird.
/var/spool/filter/scripts/mailfilter
ist ein selbst entwickelter Filter, der genau das tut (ändert „Von“-Adressen von „(Initial).surname@“ in „role@“ und überprüft dabei einen LDAP-Server).
Es schlägt nie fehl. (Im Falle eines Fehlerzustands wird einfach die Standardeingabe in die Standardausgabe kopiert und es werden keine Änderungen vorgenommen, also keine Adressänderung, die E-Mail geht aber nicht verloren.)
Das Problem ist, wenn ich eine E-Mail sende, werden zwei Kopien an[email geschützt]wie aus den Protokollen hervorgeht, nicht eine Kopie wie erwartet.
Dec 16 16:23:08 correo2 postfix/smtpd[32453]: connect from informatica1.mydomain.example[10.128.159.15]
Dec 16 16:23:08 correo2 postfix/smtpd[32453]: DD925380C87: client=informatica1.mydomain.example[10.128.159.15], sasl_method=LOGIN, [email protected]
Dec 16 16:23:08 correo2 postfix/cleanup[32456]: DD925380C87: message-id=<[email protected]>
Dec 16 16:23:09 correo2 postfix/qmgr[32275]: DD925380C87: from=<[email protected]>, size=2749, nrcpt=2 (queue active)
Dec 16 16:23:09 correo2 postfix/pickup[32274]: AAFEF380C8D: uid=110 from=<[email protected]>
Dec 16 16:23:09 correo2 postfix/pipe[32457]: DD925380C87: to=<[email protected]>, relay=filter, delay=0.81, delays=0.11/0/0/0.7, dsn=2.0.0, status=sent (delivered via filter service)
Dec 16 16:23:09 correo2 postfix/pipe[32457]: DD925380C87: to=<[email protected]>, orig_to=<[email protected]>, relay=filter, delay=0.81, delays=0.11/0/0/0.7, dsn=2.0.0, status=sent (delivered via filter service)
Dec 16 16:23:09 correo2 postfix/qmgr[32275]: DD925380C87: removed
Dec 16 16:23:09 correo2 postfix/cleanup[32456]: AAFEF380C8D: message-id=<[email protected]>
Dec 16 16:23:09 correo2 postfix/qmgr[32275]: AAFEF380C8D: from=<[email protected]>, size=2927, nrcpt=3 (queue active)
Dec 16 16:23:10 correo2 dovecot: lda([email protected])<32488><2DSfML3hnGPofgAA0V72BQ>: msgid=<[email protected]>: saved mail to INBOX
Dec 16 16:23:10 correo2 postfix/pipe[32473]: AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.28, dsn=2.0.0, status=sent (delivered via dovecot service)
Dec 16 16:23:10 correo2 dovecot: lda([email protected])<32490><Au2fML3hnGPqfgAA0V72BQ>: msgid=<[email protected]>: saved mail to INBOX
Dec 16 16:23:10 correo2 postfix/pipe[32471]: AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.34, dsn=2.0.0, status=sent (delivered via dovecot service)
Dec 16 16:23:10 correo2 dovecot: lda([email protected])<32489><BE2gML3hnGPpfgAA0V72BQ>: msgid=<[email protected]>: saved mail to INBOX
Dec 16 16:23:10 correo2 postfix/pipe[32470]: AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.35, dsn=2.0.0, status=sent (delivered via dovecot service)
Dec 16 16:23:10 correo2 postfix/qmgr[32275]: AAFEF380C8D: removed
Dec 16 16:23:11 correo2 postfix/smtpd[32453]: disconnect from informatica1.mydomain.example[10.128.159.15] ehlo=1 auth=1 mail=1 rcpt=1 data=1 quit=1 commands=6
uid=110 ist die Benutzer-UID des „Filters“. „Von“ wird nur in den Kopfzeilen innerhalb der E-Mail geändert, daher wird es in den Protokollen nicht angezeigt.
Alles läuft wie es soll, bis auf dieses doppelte Lieferdetail. Ich habe es nicht versucht, bin aber sicher, dass alles funktioniert, wenn ich Dovecot aus der Gleichung entferne. Aber ich verliere die Siebregeln und Maildir-Kontingente. Also...
Irgendeine Idee, wie ich das beheben kann?
Antwort1
Kurz gesagt: Die ursprüngliche E-Mail kommt bei Postfix an, das always_bcc hinzufügt, die Kopie sendet und die E-Mail gemäß Filter löscht. Ihr Filter sendet eine neue Nachricht an Postfix, das always_bcc hinzufügt, die Kopie sendet und dann die E-Mail zustellt.
Lesen Sie die letzten drei Absätze.
Die erste E-Mail, die Postfix erreicht, ist das OriginalDD925380C87, so dass eine Kopie davon direkt an seccopies
gemäßimmer_bccRegel. Die zweiteAAFEF380C8Dist die vom Filter übersetzte (durch Ändern des Von-Headers in Ihre Gruppe) und wird seccopies
auch an gesendet, allerdings zweimal, weil die erste E-Mail bereits den BCC von hatte seccopies
und Postfix nun denkt, dass es sie an den BCC senden muss und seccopies
erhält sie daher erneut.
Sie sollten also drei Kopien erhalten seccopies
, aber2und [3] werden als dieselbe E-Mail identifiziert (AAFEF380C8D):
- der erste von
y.hernandez
bisy.hernandez
>> always_bccseccopies
- der zweite von
informatics
bis bisy.hernandez
>> always_bccseccopies
- der dritte von
informatics
bisseccopies
>> always_bccseccopies
(als BCC von2)
Die einzige Kopie des Originals wird an folgende Adresse geliefert seccopies
:
**DD925380C87**: to=<[email protected]>, relay=filter, delay=0.81, delays=0.11/0/0/0.7, dsn=2.0.0, status=sent (delivered via filter service)
Die Zeile mit uid=110
ist wo2wird erstellt und die beiden Zustellungen (eine weil sie an ist y.hernandez
und eine weil sie BCCd ist) seccopies
stehen in diesen Zeilen:
AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.34, dsn=2.0.0, status=sent (delivered via dovecot service)
AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.28, dsn=2.0.0, status=sent (delivered via dovecot service)
Und schließlich wird die geänderte E-Mail an den vorgesehenen Empfänger zugestellt:
AAFEF380C8D: to=<[email protected]>, relay=dovecot, delay=1.1, delays=0.79/0/0/0.35, dsn=2.0.0, status=sent (delivered via dovecot service)
Die Deduplizierung würde verhindern, dass die beidenAAFEF380C8DE-Mails werden nicht an gesendet seccopies
, aber ich glaube nicht, dass es dieDD925380C87E-Mail, da es sich dabei um eine separate E-Mail handelt.
Ich denke, Sie müssen folgenDasAnweisung, so dassder Inhaltsfilter sieht die originalen Mailadressen statt des Ergebnisses von ... automatischem BCC, dann wird die E-Mail erneut in Postfix eingefügt, das dann always_bcc anwendet:
/etc/postfix/main.cf:
content_filter = scan:localhost:10025
receive_override_options = no_address_mappings
Von demEmpfangsüberschreibungsoptionen: Wenn die receive_override_options-Einstellung „VOR Inhaltsfilter“ in der Datei main.cf angegeben ist, geben Sie die receive_override_options-Einstellung „NACH Inhaltsfilter“ in master.cf an (und umgekehrt).