Fórum Root.cz

Hlavní témata => Server => Téma založeno: kryshtof 14. 07. 2016, 10:22:00

Název: sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: kryshtof 14. 07. 2016, 10:22:00
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....
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: Tuxik 14. 07. 2016, 13:57:39
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ší...
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: Sten 14. 07. 2016, 16:07:36
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.
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: kryshtof 15. 07. 2016, 07:42:53
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 (http://www.root.cz/clanky/sendmail-ruzna-prava-ruznym-uzivatelum/), tady (http://dormouse.org.uk/sw/sendmail-mc.php) nebo tady (https://lists.centos.org/pipermail/centos/2006-September/026821.html)), 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
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: Lol Phirae 15. 07. 2016, 08:50:19
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.
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: Tuxik 15. 07. 2016, 11:01:53
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 ;)
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: Tuxik 15. 07. 2016, 13:58:21
Jeste se zeptam, staci na ty subnety masky 24,16,8, nebo i jine?
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: kryshtof 15. 07. 2016, 14:32:16
Tuxik: paráda :)
24,16,8 stačí, syntax klidně tak jak se zadává v access
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: Tuxik 15. 07. 2016, 14:46:26
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
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: Tuxik 15. 07. 2016, 17:14:04
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
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: Tuxik 15. 07. 2016, 20:51:02
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.$+ .
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: kryshtof 18. 07. 2016, 10:02:47
@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...
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: Tuxik 18. 07. 2016, 12:25:07
@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.
Název: Re:sendmail - omezení IP pro odesílatele z konkrétní domény (zápis pravidel do .cf)
Přispěvatel: kryshtof 19. 07. 2016, 14:11:48
jasně, to chápu...DKIM/SPF nastavené mám, takže už si jednoduše odfiltruju nežádoucí e-maily. díky za pomoc