[Postfixbuch-users] Mails rejecten vor Postgrey

Thomas Klein mailinglist at skynetworks.de
Mi Jul 18 22:07:05 CEST 2007


Sandy Drobic schrieb:
> Thomas Klein wrote:
>   
>> Tach zusammen,
>>
>> ich hätte da mal wieder 'ne Frage:
>> So wie es den Anschein hat, werden Mails erstmal von Postgrey bearbeitet 
>> (also bei neuen Hosts erstmal rejected) und danach wird 
>> smtpd_recipient_restrictions abgearbeitet. Mir wäre es aber ehrlich 
>> gesagt lieber, daß Mails die schon gewisse Kriterien nicht erfüllen 
>> (dynamische IP oder auf einer Blacklist) eben schon mit einem 500er 
>> Fehler rejected werden bevor das Greylisting zuschlägt.
>>     
>
> Bitte mal das Log posten, wo dies geschieht. Deiner Konfiguration nach
> halte ich das für ein Gerücht.
>
> Oder hast du in master.cf einige der Checks umdefiniert. Bitte überprüfen!
>
>   
>> Gibt es hierfür eine Möglichkeit?
>>
>> Hier die Ausgabe von postconf -n:
>>
>> postconf -n
>> alias_database = hash:/etc/aliases
>> alias_maps = hash:/etc/aliases
>> biff = no
>> config_directory = /etc/postfix
>> content_filter = amavis:[127.0.0.1]:10024
>> header_checks = pcre:/etc/postfix/header_checks
>> local_recipient_maps = hash:/etc/postfix/local_recipients
>> mailbox_command =
>> mailbox_size_limit = 0
>> mydestination = $mydomains, localhost.$mydomain
>> myhostname = mail2.domain.de
>> mynetworks = 127.0.0.0/8, 192.168.40.2
>> myorigin = $mydomain
>> recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
>> recipient_delimiter = +
>> smtpd_banner = $myhostname ESMTP
>> smtpd_helo_required = yes
>> smtpd_recipient_restrictions = reject_unauth_pipelining 
>> permit_mynetworks       permit_sasl_authenticated       
>> reject_unauth_destination    check_client_access 
>> hash:/etc/postfix/whitelist_clients        check_sender_access 
>> hash:/etc/postfix/sender_access        check_recipient_access 
>> hash:/etc/postfix/recipient_access  check_client_access 
>> pcre:/etc/postfix/dynip     reject_non_fqdn_sender       
>> reject_invalid_hostname        reject_non_fqdn_hostname        
>> reject_unknown_recipient_domain  reject_non_fqdn_recipient        
>> reject_unknown_sender_domain        reject_rbl_client 
>> ix.dnsbl.manitu.net        reject_rbl_client sbl-xbl.spamhaus.org  
>> check_policy_service inet:127.0.0.1:60000
>>     
>
> Okay, hier der augenblickliche Stand:
>
> smtpd_recipient_restrictions =
> 	reject_unauth_pipelining
> 	permit_mynetworks
> 	permit_sasl_authenticated
> 	reject_unauth_destination
> 	check_client_access hash:/etc/postfix/whitelist_clients
> 	check_sender_access hash:/etc/postfix/sender_access
> 	check_recipient_access hash:/etc/postfix/recipient_access
> 	check_client_access pcre:/etc/postfix/dynip
> 	reject_non_fqdn_sender
> 	reject_invalid_hostname
> 	reject_non_fqdn_hostname
> 	reject_unknown_recipient_domain
> 	reject_non_fqdn_recipient
> 	reject_unknown_sender_domain
> 	reject_rbl_client ix.dnsbl.manitu.net
> 	reject_rbl_client sbl-xbl.spamhaus.org
> 	check_policy_service inet:127.0.0.1:60000
>
> Die Reihenfolge ist ziemlich wüst.
>
> Hier die Reihenfolge, die sich ziemlich logisch ergibt:
>
> smtpd_recipient_restrictions =
> 	reject_non_fqdn_sender
> 	reject_non_fqdn_recipient
> 	permit_mynetworks
> 	permit_sasl_authenticated
> 	reject_unauth_destination
> 	reject_unlisted_recipient
> 	check_client_access hash:/etc/postfix/whitelist_clients	
> 	reject_invalid_hostname
> 	reject_non_fqdn_hostname
> 	check_client_access pcre:/etc/postfix/dynip
> 	reject_unknown_sender_domain
> 	reject_rbl_client ix.dnsbl.manitu.net
> 	reject_rbl_client sbl-xbl.spamhaus.org
> 	check_policy_service inet:127.0.0.1:60000
>
> Ich habe reject_unknown_recipient_domain herausgenommen. Hinter
> reject_unauth_destination lehnt es nur noch deine eigenen Domains ab, was
> keinen Sinn macht und vor der Erlaubnis zum Relayen könnte es normalen
> Mailclients oder Mails-Applikationen in die Quere kommen, wenn ein
> DNS-Fehler vorliegt. Deshalb lasse ich es aus Robustheitsgründen einfach weg.
>
> Allgemein beschreiben lautet es:
>
> - Erlaube nur vertrauenswürdigen Clients das Relayen
> 	permit_mynetworks
> 	permit_sasl_authenticated
> 	reject_unauth_destination
>
> - Weise alle Mails an ungültige Empfänger deiner Domain ab:
> 	reject_unlisted_recipient
>
> Dieser Check sorgt dafür, dass die Empfängeradresse überprüft wird, ob sie
> existiert. Ohne diese Anweisung geschieht dies am Ende der
> smtpd_recipient_restrictions, was bei Greylisting und Blacklists etc.
> keinen Sinn macht. Die meisten Greylisting-Manuals schreiben dies auch
> explizit in ihrer Installationsanleitung.
>
> - Alle Mails, die jetzt noch von extern angenommen werden, können
> zugestellt werden. Damit werden keine Mails mehr nach extern gebounced.
> Jetzt sollte das Fangnetz für die Trotteladmins bereitgestellt werden (AKA
> Whitelist).
> 	check_client_access hash:/etc/postfix/whitelist_clients	
>
> Danach folgen alle Checks, die nach unerwünschten Mails suchen. Die
> Reihenfolge sollte ist üblicherweise meistens nach Kosten sortiert,
> interne Checks zuerst, dann externe mit DNS-Abfragen und die langwierigen
> zu allerletzt.
>
> 	reject_invalid_hostname
> 	reject_non_fqdn_hostname
> 	check_client_access pcre:/etc/postfix/dynip
> 	reject_unknown_sender_domain
> 	reject_rbl_client ix.dnsbl.manitu.net
> 	reject_rbl_client sbl-xbl.spamhaus.org
> 	check_policy_service inet:127.0.0.1:60000
>
> Der Rest der Konfig ist Verfeinerung, um die groben Ecken abzuschleifen:
> 	reject_non_fqdn_sender
> 	reject_non_fqdn_recipient
>
> Wenn möglich, kannst du auch reject_unlisted_sender und
> reject_unlisted_reicpient ganz oben ansetzen. Damit wird KEINEM Client
> erlaubt, eine ungültige Absender- oder Empfängeradresse in deinen Domains
> zu verwenden.
>
> Die Grundreihenfolge bleibt jedoch immer:
>
> - Erlaube nur vertrauenswürdigen Clients das Relayen
> - Weise alle Mails an ungültige Empfänger deiner Domain ab
> - Whitelist für Trotteladmins
> - Checks für unerwünschte Mails
>
>   
Servus,

danke erstmal für die ausführlichen Hinweise. Werd dann die Sache mal 
aufräumen :-)

Hab mir die Sache mal anhand von einem Beispiel angeschaut. Wie ihr ja 
schon geschrieben habt, werden nur noch Mails gegreylisted, die alle 
anderen checks überstanden haben.

Irgendwas ist trotzdem faul. Ich bin draufgekommen, weil Pflogsumm bei 
den rejects unter der Reason "Recipient address rejected: Greylisted" 
Mailadressen auflistet, die auf meinem Server nicht existieren. 
Eigentlich müßten diese schon durch

local_recipient_maps = hash:/etc/postfix/local_recipients

abgewiesen werden, zumindest ist das meine Vorstellung. Funktioniert an sich auch "manchmal", da pflogsumm auch Rejects auflistet mit Reason "Recipient address rejected: User unknown in local recipient table". Logischerweise sollten dann unter den Greylisting-Rejects keine Mails mehr stehen, bei denen die Zieladresse auf meinem Server nicht mehr existiert. Das ist aber sehr wohl so.

Im Log sieht das dann so aus, daß local_recipient_maps einfach nicht zuschlägt. In dem folgenden Beispiel ist das sichtbar:

Jul 18 12:49:32 mailgate postfix/smtpd[12849]: connect from 
unknown[201.240.97.182]
Jul 18 12:49:38 mailgate postfix/smtpd[12849]: NOQUEUE: reject: RCPT 
from unknown[201.240.97.182]: 450 4.7.1 ady at meinedomain.de>: Recipient 
address rejected: Greylisted, see 
http://isg.ee.ethz.ch/tools/postgrey/help/meinedomain.de.html; 
from=<Kings468 at intercos-iv.ru> to=<ady at meinedomain.de> proto=ESMTP 
helo=<client-201.240.97.80.speedy.net.pe>
Jul 18 12:49:41 mailgate postfix/smtpd[12849]: lost connection after 
RCPT from unknown[201.240.97.182]
Jul 18 12:49:41 mailgate postfix/smtpd[12849]: disconnect from 
unknown[201.240.97.182]

Den User "ady" gibts auf jeden Fall nicht. Wie schon gesagt, 
local_recipient_maps weist die Mail nicht ab, obwohl das meines 
Erachtens geschehen müßte. Vielleicht sollte ich das besser mit 
"check_recipient_access = hash:/etc/postfix/local_recipients" lösen?

Gruß
Thomas



Mehr Informationen über die Mailingliste Postfixbuch-users