sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)

Poradíte pls někdo, jak nastavit sendmail, když chci dosáhnout toho, aby e-mail s konkretní doménou adresy odesílatele (např. domena.com) přijal pouze z definovaných IP subnetů (např. 192.168.0.0/16, 10.10.0.0/16)?

V access.db můžu nastavit jedno nebo druhé, pro obojí zároveň to předpokládám bude potřebovat definovat  LOCAL_RULESETS (nejspíše SLocal_check_rcpt) a tady se ztrácím....


Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Poradíte pls někdo, jak nastavit sendmail, když chci dosáhnout toho, aby e-mail s konkretní doménou adresy odesílatele (např. domena.com) přijal pouze z definovaných IP subnetů (např. 192.168.0.0/16, 10.10.0.0/16)?

V access.db můžu nastavit jedno nebo druhé, pro obojí zároveň to předpokládám bude potřebovat definovat  LOCAL_RULESETS (nejspíše SLocal_check_rcpt) a tady se ztrácím....

Jsem skoro v pokušení to doma vyzkoušet, sendmail jsem poprvé a naposledy instaloval a hlavně konfiguroval snad před 15ti, možná více, lety... tenkrát se ještě moc neřešily věci jako spam, šifrování, zabezpečení a i přesto to byl nezapomenutelný zážitek hraničící s noční můrou. Je pro sendmail nějaký zvláštní důvod? Není lepší ho vyměnit za postfix? Přecejenom, uživatelská základna je myslím násobně větší...

Sten

AFAIK sendmail něco takového (sám) neumí, ale je to už hodně dlouho, co jsem ho používal. Nicméně by to mělo jít udělat přes Sieve.

Tuxik: důvod je víceméně historický - na sendmail jsem zvyklý, protože je na všech serverech o které se starám (+ podpůrné skripty s tím počítají) a doteď jsem neměl žádný důvod ho měnit - jenže když už, tak nejlíp všude, ať je to jednotné a to by znamenalo spoustu času (seznámení, odladění konfigurací...)

Sten: jsem si poměrně jistý, že to umí (viz např. tady, tady nebo tady), jen mě ta syntaxe zápisu doslova odpuzuje, takže se mi kvůli jednomu výmyslu do ní nechce pronikat...ale asi nic jiného nezbude

Lol Phirae

jen mě ta syntaxe zápisu doslova odpuzuje

To je snad zbytečné zdůrazňovat, ze stejného důvodu odpuzuje sendmail lidi od samého začátku.


Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Tuxik: důvod je víceméně historický - na sendmail jsem zvyklý, protože je na všech serverech o které se starám (+ podpůrné skripty s tím počítají) a doteď jsem neměl žádný důvod ho měnit - jenže když už, tak nejlíp všude, ať je to jednotné a to by znamenalo spoustu času (seznámení, odladění konfigurací...)
No nutit tě do ničeho nebudu.
Jinak, ten návod na https://lists.centos.org/pipermail/centos/2006-September/026821.html je správně, až se najím, popíšu detailněji ;)

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Jeste se zeptam, staci na ty subnety masky 24,16,8, nebo i jine?

Tuxik: paráda :)
24,16,8 stačí, syntax klidně tak jak se zadává v access

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Tuxik: paráda :)
24,16,8 stačí, syntax klidně tak jak se zadává v access

Nooo tak jednoduchy to neni, narazil jsem na drobne problemy, ale jsem na dobre ceste. Zase y toho nebudu nekolik let klidne spat :D

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Tak tu to je...

Kód: [Vybrat]
SCheck_domain1
R 192.168.$+            $@ OK
R 10.10.$+              $@ OK
R $*                    $#error $@ 5.7.1 $: "550 Relaying denied"

SLocal_check_mail
R $* @ $*               $: $2
R domena.tld            $@ $>Check_domain1 $&{client_addr}
R $*                    $@ OK

kdyby to nebylo jasne, rad zodpovim pripadne dotazy :)

Jen doplnim, SLocal_check_mail uz by mel ve vychozi konfiguraci existovat jako prazdny, tam je treba pridat ty tri radky, ACheck_domain1 je komplet nova cast
« Poslední změna: 15. 07. 2016, 17:15:39 od Tuxik »

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Tak trochu detailnější popis, konečně na to mám pořádně čas.

Kód: [Vybrat]
SCheck_domain1Nový ruleset s názvem Check_domain1
Kód: [Vybrat]
R 192.168.$+            $@ OKjestli je na začátku IP adresy 192.168. , tak Check_domain1 skončí se stavem OK, jestli není, pokračuje se dál bez akce
Kód: [Vybrat]
R 10.10.$+              $@ OKjestli je na začátku IP adresy 10.10. , tak Check_domain1 skončí se stavem OK (nezapomínat na tečku před $, jinak by sedělo třeba 10.100.... 10.101..... atd
Kód: [Vybrat]
R $*                    $#error $@ 5.7.1 $: "550 Relaying denied"jestli IP adresa nezačíná s žádným z předchozích, tak se provede výchozí akce pro kontrolovanou doménu - konec Check_domain1 s chybou.

Kód: [Vybrat]
SLocal_check_mailruleset Local_check_mail - je standardně volán z rulesetu check_mail, který se volá automaticky při ověřování MAIL FROM
Kód: [Vybrat]
R $* @ $*               $: $2vstupem Local_check_mail je mailová adresa, toto ji rozdělí na jméno a doménu a dál pošle jen doménu
Kód: [Vybrat]
R domena.tld            $@ $>Check_domain1 $&{client_addr}jestli je doména "domena.tld" tak zavolej Check_domain1 a skonči - jestli doména neodpovídá, akce se neprovádí a pokračuje se dál
na toto místo je možné dopsat další domény jednoduchým zkopírováním tohoto řádku a záměnou domena.tld
je možné zavolat buď stejný Check_domain1, nebo pokud jsou adresy pro další doménu jiné, analogicky se založí například Check_domain2
$&{client_addr} je funkce sendmailu, která jako vstup pro Check_domain1 předá IP adresu, která chce email odeslat
Kód: [Vybrat]
R $*                    $@ OKpokud doména není žádná z kontrolovaných, pustí zbytek emailů dál bez omezení

snad je to všechno, nakonec je to celkem primitivní, když se do toho člověk ponoří :)

debug se dá provést killnutím sendmailu a jeho spuštšním s parametry
Kód: [Vybrat]
sendmail -bD -d21.2
následně se dá otestovat telnetem:
Kód: [Vybrat]
telnet mail_server 25a postupným zadáním příkazů do telnetu
Kód: [Vybrat]
EHLO adresa_mail_serveru
MAIL FROM: testovaci@email.tld
sendmail by měl vypsat debug informace a na konci by mělo být poznat, jestli testovací adresa byla schválena. Jako adresu pro testování se do konfigurace zadá adresa, ze které se připojujeme - klidně 127.0.0.1, pokud testujeme přímo z mailserveru, pokud zadáváme celou adresu bez "masky", podmínka výše vypadá takto:
Kód: [Vybrat]
R 127.0.0.1            $@ OKnebo můžeme zkusit například
Kód: [Vybrat]
R 127.0.0.$+           $@ OK
Ještě upozorňuji, že sendmail mezi pravou a levou stranou rewrite rules POŽADUJE TABULÁTOR(y), s mezerami NEBUDE FUNGOVAT!

a ještě doplnění, kdyby byla potřeba maska například 10.10.0.0/23, musela by se zadat na dva řádky jako 10.10.0.$+ a 10.10.1.$+ . Pro masku /17 by se muselo vytvořit 128 jednotlivých řádků od 10.10.0.$+ po 10.10.127.$+ .
« Poslední změna: 15. 07. 2016, 20:58:52 od Tuxik »

@Tuxik : díky, šlape to perfektně - máš u mě pivo :)

akorát jsem si neuvědomil, že to bude fungovat pouze když je sendmail v roli MSA (pro SMTP od klientů), ale e-maily které přijme jako MTA od jiných serverů to ignoruje...

Napadá někoho, jak ošetřit i tohle?
Asi to jinak než na pomocí nějakého milteru nebo na úrovni MDA (dovecot, tedy už zmíněné Sieve) nepůjde...

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
@Tuxik : díky, šlape to perfektně - máš u mě pivo :)

akorát jsem si neuvědomil, že to bude fungovat pouze když je sendmail v roli MSA (pro SMTP od klientů), ale e-maily které přijme jako MTA od jiných serverů to ignoruje...

Napadá někoho, jak ošetřit i tohle?
Asi to jinak než na pomocí nějakého milteru nebo na úrovni MDA (dovecot, tedy už zmíněné Sieve) nepůjde...

No to tak nějak vyplývá z logiky věci. Z jiného serveru ti může přijít cokoliv odkudkoliv a blbě se to bude řešit. Ještě nedávno bylo běžné posílat e-maily třeba přes svého providera. Aktuálně se to řeší přes DKIM/SPF, ale to řešení je na majiteli domény, která odesílá. Pokud je ve tvé správě, nastav to tam stejně, pokud není, je to na nich a je v jejich zájmu si to nastavit (už jen proto, že DKIM/SPF dokáže ubrat bodíky na spam ratingu). Nevím, jestli je rozumné rozhodovat za cizí domény, odkud může jejich uživatel poslat e-mail. Nehledě k tomu, že se adresy můžou čas od času změnit z různých důvodů (třeba přechod k jiné službě, pokud si firma nespravuje servery sama, změna providera, pokud firma nemá  vlastní IP rozsah atd) a ty budeš muset ručně tyto změny udržovat ve své lokální konfiguraci.

Jestli víš co děláš a jsi si opravdu vědom všech rizik, tak si doma nahodím ještě jeden virtuál a zkusím to pořešit, určitě to půjde.

Ostatně předpokládám, že DKIM/SPF by jsi měl mít nastavený taky, jinak je ti celá kontrola odesílatele na dvě věci a kdokoliv může e-mail poslat z "tvojí domény" přes libovolný pro něj otevřený SMTP. A stejně je ti to i tak k ničemu, pokud příjemce DKIM/SPF nezjišťuje a neřeší/řeší_blbě spam.
« Poslední změna: 18. 07. 2016, 12:30:02 od Tuxik »

jasně, to chápu...DKIM/SPF nastavené mám, takže už si jednoduše odfiltruju nežádoucí e-maily. díky za pomoc