E-Mail mit Haltbarkeitsdatum mit Exim
Noch flexibler als die Labels in E-Mail-Adressen vom letzten Mal sind Adressen mit Konditionen,
hier nutzer#before#20101224@domain, die Adresse ist bis zum 24.12.2010 gültig, und
nutzer#fromdomain#example.com@domain, die Adresse ist nur für Mails von example.com gültig.
Implementation in Exim nach dem Break.
Wieder braucht es (fast) nur eine neue Datei im Config-Ordner.
Anzulegen ist diesmal /etc/exim4/conf.d/router/895_exim4_config_user_condition mit folgendem Inhalt:
driver = redirect
allow_defer
allow_fail
domains = +local_domains
caseful_local_part = false
condition = ${if \
or {\
{\
# suffix contains #before# and date (yyyymmdd) is not yet #before#yyyymmdd
and {\
{\
eq {${sg{$local_part_suffix}{^#([^#]+)#[0-9]\{8\}\$}{\$1}}}{before}\
}{\
lt {$tod_logfile}{${sg{$local_part_suffix}{^#[^#]+#([0-9]\{8\})\$}{\$1}}}\
}\
}\
}{\
# suffix contains #fromdomain# and the domain-name of sender
and {\
{\
eq {${sg{$local_part_suffix}{^#([^#]+)#.*\$}{\$1}}}{fromdomain}\
}{\
eq {$sender_address_domain}{${sg{$local_part_suffix}{^#[^#]+#(.*)\$}{\$1}}}\
}\
}\
}\
}\
}
data = ${local_part}@${domain}
local_part_suffix = #*
retry_use_local_part
(Angepasster Code von Howto setup a Virtual Mail System with Exim, MySQL, SpamAssassin, ClamAV and Dovecot.)
Allerdings verbietet der Debiansche Exim in der Standardeinstellung das Zeichen # in Adressen für eingehende Mails.
Deshalb muss /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs in folgendem Block geändert werden:
CHECK_RCPT_LOCAL_LOCALPARTS = ^[.] : ^.*[@%!/|`&?]
.endif
Rausgeflogen ist # als ungültiges Zeichen in Adressen.
Die Sache hat allerdings auch Haken:
Der fromdomain-Filter ist meiner Meinung nach relativ unnütz, da hier auf den Envelope Sender geprüft wird, d.h. man muss die Absendeadresse der legitimen Mails an einen genau kennen.
Und die von Exim erzeugte Fehlermeldung, die bei normalen Absendern als Bounce ankommt, ist auch nicht allzu aussagekräftig:
host mail.exosphere.de [178.63.46.183]: 550 Unrouteable address
Related posts:
July 31st, 2010 - 13:29
zwei kommentare:
1) klar muss man die absender-domain kennen. hier geht’s ja genau darum, dass ich mich bei einer firma registriere und die meine mail nicht weitergeben sollen.
2) zu der fehlermeldung: der router generiert keine fehlermeldung. entweder er akzeptiert die mail, oder nicht:
mail from: test@example.com
250 OK
rcpt to: pille#fromdomain#0×42.org@struction.de
550 Unknown user
rcpt to: pille#fromdomain#example.com@struction.de
250 Accepted
wahrscheinlich kommt es von einer fehlgeschlagenen sender-verification.
pille
August 27th, 2010 - 20:11
Zu 1.) Aber ich muss halt auch wissen, welche Domain die Firma im Envelope benutzt.
Beispiel: Ich bestelle bei amazon.de, die Mails kommen aber trotzdem von amazon.com.
Zu 2.) Ich krieg eben 550 Unroutable address raus, das sieht für den Absender dann IMO so aus, als wäre mein Mailsystem kaputt. Das ist halt ein (kleiner) Schönheitsfehler, der in meiner Config auftaucht.