Portál AbcLinuxu, 5. května 2025 23:19
Řešení dotazu:
Gmail routes messages with unverified forwarding configurations through Google servers with public IP addresses. The public IP addresses are intentionally left out of Google's SPF record
greylistd
založená na trojkombinaci, která počítá s IP adresu vím. Bohužel její logika je taková, že ji nelze jednoduše upravit, protože počítá s tím, že se server, který zprávu posílá pokusí o doručení ještě jednou.
Podle dokumentace k eximu by mělo stačit nastavení pravidla, které zkontroluje dva údaje, jestli nejsou v nějakém seznamu. Pokud ano, mail zahodí, nebo vrátí jako nedoručitelný.
Mělo by fungovat tohle:
acl_check_rcpt: deny message = $sender_host_address is blacklisted from delivering \ mail from <$sender_address> to <$local_part@$domain>. log_message = blacklisted. verify = recipient condition = ${if exists {/etc/greylistd/whitelist-sender} \ {${readfile{/etc/greylistd/whitelist-sender}\ {$sender_address $local_part@$domain}\ {}}Ale nefunguje. Něco je někde špatně, jenže nevím co.
greylistd
by mi bohatě stačil, protože bych nastavil timer, který by ty čekající záznamy průběžně zpracovával a podle zmíněné kombinace házel buď do white nebo black. Žádná raketová věda.
/exim4/exim4.conf.template
je třeba vložit následující kus kódu (bez těch plus pochopitelně), a založit v adresáři /etc/filtruj
(třeba), dva soubory – jeden pro blokované adresy odesilatelů a druhý pro cílové adresy.
Pozor! pokud mezi cílovými adresami zapomenete uvést tu na kterou maily chodit mohou, vrátí se zpráva neblokovaným odesilatelům s oznámením, že byla zablokovaná.
acl_check_rcpt: + deny + condition = ${if match {${lookup{$sender_address}wildlsearch{/etc/filtruj/odesilatele}{yes}{no}}} {${lookup{$local_part@$domain}wildlsearch{/etc/filtr/adresati}{yes}{no}}}} + set acl_m6 = blacklisted + logwrite = Rejected from $sender_address to $local_part@$domain by blacklist.V souboru
/etc/filtruj/adresati
jsou uvedeny adresy, pro které se má testovat jestli se to má poslat dál nebo ne.
A v souboru /etc/filtruj/odesilatele
jsou adresy co se jim má, v případě, že napíšou na některou z těch adres, zpráva vrátit.
Logika věci je taková, že na ty adresy mohou psát jen neblokovaní uživatelé. A pokud někdo napíše blokovaný uživatel mail na neexistující adresu, dropne jeho zprávu mailserver.
550 Administrative prohibition
, kdežto v případě že pošleš něco na neexistující schránku dostaneš 550 Unrouteable address
, takže odesilatel, pokud to není zrovna bot, je informován proč byl ten mail zaříznutý.
A trochu jsem to ještě poladil.
condition = ${if <={\ ${lookup{$sender_address}wildlsearch{CONFDIR/blocked-from-address}{1}{3}}\ } {\ ${lookup{$local_part@$domain}wildlsearch{CONFDIR/protect-to-address}{1}{2}}\ }}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.