Portál AbcLinuxu, 12. května 2025 10:31
V poslední době nám do firmy chodí stále více spamů ve kterých je zfalšovaná adresa odesílatele v hlavičce From:, která je shodná s hlavičkou To: (mail vypadá že si jej uživatel posílá sám).
Jedinným řešením je zakázat posílání mailů "sám sobě", pokud je odeslán z !+relay_from_hosts, zkoušel jsem do ACL data vložit:
deny message = Spravce systemu zakazal posilani mailu sam sobe
sender_domains = +local_domains
hosts = !+relay_from_hosts
condition = ${if eq {$header_from}{$header_to}{yes}{no}}
Ale tohle samozřejmě nefunguje (druhý parametr nemůže být proměnná). Jakým způsobem mám podmínku upravit?
Dík za radu Birkof
Received:
v hlavičke. Niektoré môžu byť sfalšované, ale aspoň tá, ktorá hovorí o tom, z akej IP to prijal tvoj mail server, by mala byť pravdivá. Ak je tam vo všetkých správach uvedená rovnaká IP, tak sa spoj so správcom toho stroja a popros ho, aby vysledoval ďalší hop.
Ak je to ale tak, že sa tvoja mailová adresa sa dostla do rúk spammerom a tí používajú nejaký botnet na posielanie spamu, tak to chodí z množstva rôznych adries a máš smolu. Ostáva nasadiť nejaký bayesian spam filter.
Ak je tam vo všetkých správach uvedená rovnaká IP, tak sa spoj so správcom toho stroja a popros ho, aby vysledoval ďalší hop.Tím se daleko nedostanete. Ten stroj bude patrně v botnetu a správce... no, raději nic. Jinak ad tazatelův dotaz: v eximu se nevyznám, ale vždycky si můžete napsat nějaký jednorázový filtr (v perlu) a/nebo použít obecné spamové řešení (např. spamassassin).
Mám v Exim ACL jednoduché pravidlo, které odmítne všechny zprávy, které mají odesílatele v naší doméně - protože takové zprávy mohou chodit výhradně z našeho serveru. Je možné přidat navíc whitelist dalších serverů, které používáte jako odesílací. Problém může být, pokud vaši uživatelé posílají maily přes různá smtp - třeba u jiného ISP - ty pak přes váš server neprojdou. Řešením je nastavit jim jako odesílací server ten váš, ale samozřejmě musíte mít nastavenu autorizaci, pokud to není v LAN.
# acl/30_exim4-config_check_rcpt
...
# Deny remote local_domain senders - identity theft
...
deny
message = Using my domain is identity theft.
condition = ${if match \
{$sender_address_domain}\
{\N^(.*\.)?mojedomena\.cz$\N}\
{yes}{no}}
Místo toho reg. výrazu by bylo čistější tam mít prohledávání my_domains, ale to jsem neměl čas řešit a takhle mi to stačí...
důležité je i místo v souboru, kam tohle doplnit - hned za předdefinovaný blok s SFP:
# Use spfquery to perform a pair of SPF checks (for details, see
# ...
# SPF check" warning.
.ifdef CHECK_RCPT_SPF
deny
...
.endif
--- PŘIDAT SEM ---
Uz jsem na to prisel !!!
# Fake sender address (himself message)
warn set acl_c0 = $header_from
hosts = !+relay_from_hosts
sender_domains = +local_domains
warn set acl_c1 = $header_to
hosts = !+relay_from_hosts
sender_domains = +local_domains
deny message = Suspected Faked sender address \n>\n> \
SPRAVCE SYSTEMU ZAKAZAL POSILANI MAILU "SAM SOBE" \n>\n> \
Tip: Zadejte svou adresu do pole kopie \n>\n>
log_message = deny himself message
sender_domains = +local_domains
hosts = !+relay_from_hosts
condition = ${if eq{$acl_c0}{$acl_c1} {yes}{no}}
Perfektne to funguje! Teoreticky by nemelo dojit ani k situaci, ze si uzivatel pro ktereho neni nastaveno smtp relay nebude moci poslat email sam sobe, protoze v hlavicce "From:" je krome adresy take jmeno na rozdil od hlavicky "To:" a nebude tedy splnena podminka. Takze doufam ze uz bude na chvili pokoj se SPAMy na Viagru (dokud SPAMeri nevymysli neco noveho).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.