[postfix-users] SMTPD soll nicht existente Absender meiner Domains ablehnen
Hallo Liste!
Ich habe mit reject_sender_login_mismatch meinen SMTPD angewiesen zu überprüfen ob der Client E-Mails mit einem Absender meiner Domains senden darf. Das funktioniert auch. Nun habe ich aber festgestellt, dass E-Mail-Adressen, die nicht auf meinen Domains existieren zugelassen werden, weil sie ja niemandem gehören. Das finde ich schlecht, da man so mit ähnlichen Namen z.b. schmidt_meyer@meinedomain, statt meyer_schmidt@meinedomain E-Mails fälschen kann.
Was ist die einfachste/sauberste Lösung für diese Problem?
Eine Lösung die ich kenne, ist diese hier: http://www.arschkrebs.de/postfix/postfix_restriction_classes3_de.shtml, aber ich vermute, dass es da was in Postfix integriertes geben muss ohne neue maps und restriction_classes zu erstellen.
Alternativ könnte ich die SQL Query von smtpd_sender_login_maps natürlich so einrichten, dass sie bei nicht existenten E-Mail-Adressen immer postmaster@meinedomain ausgibt und so den versand ablehnt, aber das ist irgendwie auch hingefrikelt.
Gruß Benedikt
Auftrag von Sprite Service
Ich habe mit reject_sender_login_mismatch meinen SMTPD angewiesen zu überprüfen ob der Client E-Mails mit einem Absender meiner Domains senden darf. Das funktioniert auch. Nun habe ich aber festgestellt, dass
E-
Mail-Adressen, die nicht auf meinen Domains existieren zugelassen werden, weil sie ja niemandem gehören. Das finde ich schlecht, da man so mit ähnlichen Namen z.b. schmidt_meyer@meinedomain, statt meyer_schmidt@meinedomain E-Mails fälschen kann.
Was ist die einfachste/sauberste Lösung für diese Problem?
Falsche Restriktion. Nimm
reject_unlisted_recipient, reject_unknown_recipient_domain,
einzutragen vor
permit_sasl_authenticated,
postconf -n master.cf ohne Kommentare
und logfileauszug des Problems (aber bitte vollständig)
dann kann man auch dein wirkliches Problem sehen und weiß auch welche Restriktionen nicht oder auch an der falschen Stelle sitzen.
Eine Lösung die ich kenne, ist diese hier: http://www.arschkrebs.de/postfix/postfix_restriction_classes3_de.shtml, aber ich vermute, dass es da was in Postfix integriertes geben muss ohne neue maps und restriction_classes zu erstellen.
Alle Restriktionen kannst du auf
http://www.postfix.org/postconf.5.html
nachlesen.
Alternativ könnte ich die SQL Query von smtpd_sender_login_maps natürlich so einrichten, dass sie bei nicht existenten E-Mail-Adressen immer postmaster@meinedomain ausgibt und so den versand ablehnt, aber das ist irgendwie auch hingefrikelt.
Mit freundlichen Grüßen
Uwe Drießen -- Software & Computer Uwe Drießen Lembergstraße 33 67824 Feilbingert
Tel.: 06708660045
Hallo Uwe!
Falsche Restriktion. Nimm
reject_unlisted_recipient, reject_unknown_recipient_domain,
einzutragen vor
permit_sasl_authenticated,
Ich glaube du hast mich nicht richtig verstanden. Das Problem ist nicht der Empfänger sondern, der Absender. Die bisherige Konfiguration erlaubt Clients die sich mit meinem SMTPD verbinden E-Mails zu verschicken, welche als Absender zwar meine Domain enthalten, aber als local part (links vom @) eine nicht vorhande Adresse nutzen. Deswegen setzt reject_sender_login_mismatch nicht ein und jeder kann so E-Mails an meine Nutzer schicken, die als Absender imaginäre Nutzer meiner Domains haben. Falls ich was nicht verstehe, klär mich bitte auf.
postconf -n master.cf ohne Kommentare
===main.cf===
(Ich habe bereits den Lösungsvorschlag von Florian eingebaut, der auch zu funktionieren scheint. "meinedomain" ist im Original natürlich meine domain. soft_bounce ist nur vorrübergehend aktiviert.)
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
inet_interfaces = all
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
mydestination = localhost
myhostname = mail.meindomain.de
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sender_login_maps = mysql:/etc/postfix/mysql-smtpd-sender-login-maps.cf
smtpd_sender_restrictions = permit_mynetworks, reject_non_fqdn_sender, reject_sender_login_mismatch, permit_sasl_authenticated, check_sender_access hash:/etc/postfix/sender_blacklist
smtpd_tls_cert_file = /etc/ssl/certs/meinedomain.pem
smtpd_tls_key_file = /etc/ssl/private/meinedomain.pem
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
soft_bounce = yes
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = dovecot
===master.cf===
smtp inet n - - - - smtpd
pickup fifo n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr fifo n - n 300 1 qmgr
tlsmgr unix - - - 1000? 1 tlsmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - - - - smtp
relay unix - - - - - smtp
-o smtp_fallback_relay=
showq unix n - - - - showq
error unix - - - - - error
retry unix - - - - - error
discard unix - - - - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil
scache unix - - - - 1 scache
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
Gruß
Benedikt
Von: Sprite Service [mailto:spriteserviceline@hotmail.com]
Hallo Benedikt
Hallo Uwe!
Falsche Restriktion. Nimm
reject_unlisted_recipient, reject_unknown_recipient_domain,
einzutragen vor
permit_sasl_authenticated,
Ich glaube du hast mich nicht richtig verstanden. Das Problem ist nicht der Empfänger sondern, der Absender. Die bisherige Konfiguration erlaubt Clients die sich mit meinem SMTPD verbinden E-Mails zu verschicken, welche als Absender zwar meine Domain enthalten, aber als local part (links vom @) eine nicht vorhande Adresse nutzen. Deswegen setzt reject_sender_login_mismatch nicht ein und jeder kann so E-Mails an meine Nutzer schicken, die als Absender imaginäre Nutzer meiner Domains haben. Falls ich was nicht verstehe, klär mich bitte auf.
reject_unlisted_sender Reject the request when the MAIL FROM address is not listed in the list of valid recipients for its domain class. See the smtpd_reject_unlisted_sender parameter description for details. This feature is available in Postfix 2.1 and later.
smtpd_reject_unlisted_sender (default: no)
Request that the Postfix SMTP server rejects mail from unknown sender addresses, even when no explicit reject_unlisted_sender access restriction is specified. This can slow down an explosion of forged mail from worms or viruses.
An address is always considered "known" when it matches a virtual(5) alias or a canonical(5) mapping.
The sender domain matches $mydestination, $inet_interfaces or $proxy_interfaces, but the sender is not listed in $local_recipient_maps, and $local_recipient_maps is not null. The sender domain matches $virtual_alias_domains but the sender is not listed in $virtual_alias_maps. The sender domain matches $virtual_mailbox_domains but the sender is not listed in $virtual_mailbox_maps, and $virtual_mailbox_maps is not null. The sender domain matches $relay_domains but the sender is not listed in $relay_recipient_maps, and $relay_recipient_maps is not null.
This feature is available in Postfix 2.1 and later.
Mit freundlichen Grüßen
Uwe Drießen -- Software & Computer Uwe Drießen Lembergstraße 33 67824 Feilbingert
Tel.: 06708660045
Sender <> Recipient :)
reject_unlisted_sender Reject the request when the MAIL FROM address is not listed in the list of valid recipients for its domain class. See the smtpd_reject_unlisted_sender parameter description for details. This feature is available in Postfix 2.1 and later.
OK, ergibt Sinn. Wunder mich grad selber, dass ich das übersehen hab. Hatte die Doku schon vor Schreiben an die Liste zig mal durchgelesen.
Habe jetzt diese Lösung genommen, da sie noch einfacher als die von Florian ist. Einige Sachen sind mir noch unklar. Würde mich freuen wenn mir da jemand mit dem Verständnis helfen kann.
smtpd_reject_unlisted_sender (default: no)
Request that the Postfix SMTP server rejects mail from unknown sender addresses, even when no explicit reject_unlisted_sender access restriction is specified. This can slow down an explosion of forged mail from worms or viruses.
An address is always considered "known" when it matches a virtual(5) alias or a canonical(5) mapping.
Der ganze folgende Abschnitt ist unklar geschrieben. Sind dieser Punkt und die nächsten vier mit ODER verknüpft? Und sind "unknown sender addresses" alle, die nicht von meinem Server verwaltet werden, also die ganze Welt sozusagen? Letztendlich kann da ja mein Server nicht wissen ob sie existieren oder nicht.
The sender domain matches $mydestination, $inet_interfaces or $proxy_interfaces, but the sender is not listed in $local_recipient_maps, and $local_recipient_maps is not null. The sender domain matches $virtual_alias_domains but the sender is not listed in $virtual_alias_maps. [*] The sender domain matches $virtual_mailbox_domains but the sender is not listed in $virtual_mailbox_maps, and $virtual_mailbox_maps is not null. The sender domain matches $relay_domains but the sender is not listed in $relay_recipient_maps, and $relay_recipient_maps is not null.
Hier zum Beispiel würde das zweite[*] doch bedeuten das Mails von irgendwaszufälliges@meinedomain.de akzeptiert werden, falls es ein ODER sein soll und die Mails dann "known" sind.
Am 28.02.2012 01:28 schrieb Sprite Service:
Hallo Liste!
Ich habe mit reject_sender_login_mismatch meinen SMTPD angewiesen zu überprüfen ob der Client E-Mails mit einem Absender meiner Domains senden darf. Das funktioniert auch. Nun habe ich aber festgestellt, dass E-Mail-Adressen, die nicht auf meinen Domains existieren zugelassen werden, weil sie ja niemandem gehören. Das finde ich schlecht, da man so mit ähnlichen Namen z.b. schmidt_meyer@meinedomain, statt meyer_schmidt@meinedomain E-Mails fälschen kann.
Was ist die einfachste/sauberste Lösung für diese Problem?
Emails die Deine Domain als Absender haben auch nur von Deinen Mailservern annehmen.
Ich löse es so:
- in mynetworks stehen alle meine mailserver/subnetze - permit_mynetworks in den restrictions an passender stelle - smtpd_sender_restrictions = [...] check_sender_access hash:/etc/postfix/sender_blacklist, [...]
sender_blacklist: f-streibelt.de 504 5.5.2 mx01: You are not a valid MX for the sender domain.
/Florian
Hallo Florian!
Danke für deinen Vorschlag! Ich habe eine Weile gebraucht um die access maps zu verstehen, ich glaube jetzt habe ich es. Allerdings habe ich andere Fehlercodes benutzt, nachdem ich ein bisschen in http://tools.ietf.org/html/rfc3463 gelesen habe. Meine access map sieht jetzt so aus: /etc/postfix/sender_blacklist: meinedomain.de 550 5.1.7 You are not allowed to relay my domains. Werde das ganze noch in die MYSQL-Datenbank reinhauen, wie meine restlichen maps. Gruß Benedikt P.S. Ist das OK auf dieser Liste wenn man jedem Empfänger einzeln antwortet? Ich benutze normalerweise Foren und da soll man ja die Zahl der Posts möchlist gering halten.
Am 29.02.2012 06:01 schrieb Sprite Service:
http://tools.ietf.org/html/rfc3463 gelesen habe. Meine access map sieht jetzt so aus:
/etc/postfix/sender_blacklist: meinedomain.de 550 5.1.7 You are not allowed to relay my domains.
Hmm, wenn ich das gerade richtig sehe ist X.1.7 Bad sender's mailbox address syntax sicher, dass Du nicht X.7.1 Delivery not authorized, message refused meinst?
ich hab bei mir bei den Fehlermeldungen immer noch den lokalen Hostnamen (mx01, etc.) mit drin, um beim debugging oder wenn mir jemand eine Fehlermeldung weiterleitet zu sehen, von welchem meiner server er abgelehnt wurde. Ausserdem mag ich sprechende Fehlermeldungen - aus der oben würde ich nicht erwarten, dass ein unbedarfter windows-exchange admin schlau wird :P
Aber danke für's RFC lesen, ich glaunbe ich sollte meinen Errorcode mal korrigieren :)
Werde das ganze noch in die MYSQL-Datenbank reinhauen, wie meine restlichen maps.
Gruß Benedikt
P.S. Ist das OK auf dieser Liste wenn man jedem Empfänger einzeln antwortet? Ich benutze normalerweise Foren und da soll man ja die Zahl der Posts möchlist gering halten.
Nein, das ist hier kontraproduktiv - es genügt wenn Du einmal an die Liste antwortest - Deine beiden Mails haben jetzt unterschiedliche Message-IDs und das zerfastert ziemlich in meinem Mailclient (Thread-Ansicht geht kaputt). Ausserdem haben diejenigen die hier antworten die Liste eigentlich alle abonniert - nur bei 'neuen' ist das immer die Frage - daher bekommst Du die Antworten auch immer nochmal im CC :=)
Grüße, Florian
Hmm, wenn ich das gerade richtig sehe ist X.1.7 Bad sender's mailbox address syntax sicher, dass Du nicht X.7.1 Delivery not authorized, message refused meinst?
So richtig passt keiner der beiden, finde ich. Auch sind die Formulierungen ja recht allgemein. Ich hatte mir auch X.7.1 überlegt, aber der ist imo eher so gemeint, dass der Sender nicht an dieses Ziel senden darf. Das Problem ist aber eher die Herkunft. Bei X.1.7 steht "The address status reports on the originator or destination address. It may include address syntax or validity." Wegen "validity" habe ich es genommen.
ich hab bei mir bei den Fehlermeldungen immer noch den lokalen Hostnamen (mx01, etc.) mit drin, um beim debugging oder wenn mir jemand eine Fehlermeldung weiterleitet zu sehen, von welchem meiner server er abgelehnt wurde. Ausserdem mag ich sprechende Fehlermeldungen - aus der oben würde ich nicht erwarten, dass ein unbedarfter windows-exchange admin schlau wird :P
Macht Sinn! :)
Gruß Benedikt
participants (3)
-
Florian Streibelt
-
Sprite Service
-
Uwe Drießen