[postfix-users] After Queue Content Filter

Anne Walter wanekat at googlemail.com
Mi Feb 29 17:25:23 CET 2012


Hallo Liste,

ich möchte eine server-seitige E-Mail-Verschlüsselung einrichten.

Zum Hintergrund: auf dem Server wird eine Webanwendung betrieben, die an
eine kleine Anzahl von Nutzern E-Mails verschickt. Die E-Mails sollen
mit den öffentlichen Schlüsseln der Nutzer verschlüsselt werden. Die
Webanwendung selber kann dies aber (noch) nicht. Daher meine Idee, die
Verschlüsselung über einen Postfix After-Queue-Content-Filter zu lösen.
Ziel ist, über den Filter ein Skript aufzurufen, das die Mail
verschlüsselt und dann wieder an postfix zurück gibt zum Versenden. Dazu
habe ich mich an die Anleitung des "Advanced Content Filter" auf den
Postfix-Seiten gehalten.

Soweit ich das verstanden habe, ist "spawn" dafür zuständig, das Skript
aufzurufen, die E-Mails zu übergeben, nach Verarbeitung wieder entgegen
zu nehmen und anschließend wieder in postfix zu "reinjecten". Nun meine
Frage:
Über welche Schnittstelle bekommt das Skript denn die E-Mail? Muss es
auf dem entsprechenden Port lauschen? Oder übernimmt das der
spawn-Prozess und füttert das Skript über stdin?

Wie bereits beschrieben, beim Einrichten habe ich mich an die Anleitung
des "Advanced Content Filter" auf den postfix-Seiten gehalten. Leider
funktioniert das Aufrufen des Skripts nicht, es wird folgender Fehler in
/var/log/mail.info geschrieben:
connect to localhost[::1]:10025: Connection refused

aw at rechnername:~> netstat -an|grep LISTEN
tcp    0      0 0.0.0.0:25              0.0.0.0:*               LISTEN
tcp    0      0 127.0.0.1:10025         0.0.0.0:*               LISTEN
tcp    0      0 127.0.0.1:10026         0.0.0.0:*               LISTEN
tcp    0      0 :::25                   :::*                    LISTEN

Ich vermute daher, dass spawn und das Skript sich nicht verstehen.

Hat jemand von euch noch einen Tip, an was es hakt?

Vielen Dank!

Anne


Die entsprechenden Zeilen in der master.cf:
(Zeilenumbrüche durch "\" markiert)
## filter for encrypting emails
scan unix - - n - 10 smtp
	-o smtp_send_xforward_command=yes
	-o disable_mime_output_conversion=yes
	-o smtp_generic_maps=
localhost:10025 inet n n n - 10 spawn
	user=filter argv=/usr/bin/python /usr/local/bin/parseMail.py \
		localhost 10026
#reinjecting the mail
localhost:10026 inet n - n - 10 smtpd
	-o content_filter=
	-o \
receive_override_options=no_unknown_recipient_checks,no_header_body_checks,no_milters
	-o smtpd_helo_restrictions=
	-o smtpd_client_restrictions=
	-o smtpd_sender_restrictions=
	-o smtpd_recipient_restrictions=permit_mynetworks,reject
	-o mynetworks=127.0.0.0/8
	-o smtpd_authorized_xforward_hosts=127.0.0.0/8
##

postconf -n:
aw at rechner:~> sudo /usr/sbin/postconf -n
alias_maps = hash:/etc/aliases
biff = no
command_directory = /usr/sbin
config_directory = /etc/postfix
content_filter = scan:localhost:10025
daemon_directory = /usr/lib/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debug_peer_list = 127.0.0.1, localhost, dev.xy.com
html_directory = /usr/share/doc/packages/postfix-doc/html
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mail_spool_directory = /var/mail
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
mydestination = $myhostname, localhost
mydomain = dev.xy.com
myhostname = mail.dev.xy.com
mynetworks_style = host
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/packages/postfix-doc/README_FILES
receive_override_options = no_address_mappings
relay_domains = $mydestination, hash:/etc/postfix/relay
sample_directory = /usr/share/doc/packages/postfix-doc/samples
sendmail_path = /usr/sbin/sendmail
setgid_group = maildrop
smtp_sasl_auth_enable = no
smtp_use_tls = no
smtpd_helo_required = no
smtpd_helo_restrictions =
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
smtpd_sasl_auth_enable = no
smtpd_use_tls = no
strict_8bitmime = no
strict_rfc821_envelopes = no
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual


Mehr Informationen über die Mailingliste postfix-users