Fórum Root.cz
Hlavní témata => Server => Téma založeno: 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....
-
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ší...
-
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 (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
-
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: 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 ;)
-
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: 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
-
Tak tu to je...
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
-
Tak trochu detailnější popis, konečně na to mám pořádně čas.
SCheck_domain1
Nový ruleset s názvem Check_domain1
R 192.168.$+ $@ OK
jestli je na začátku IP adresy 192.168. , tak Check_domain1 skončí se stavem OK, jestli není, pokračuje se dál bez akce
R 10.10.$+ $@ OK
jestli 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
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.
SLocal_check_mail
ruleset Local_check_mail - je standardně volán z rulesetu check_mail, který se volá automaticky při ověřování MAIL FROM
R $* @ $* $: $2
vstupem Local_check_mail je mailová adresa, toto ji rozdělí na jméno a doménu a dál pošle jen doménu
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
R $* $@ OK
pokud 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
sendmail -bD -d21.2
následně se dá otestovat telnetem:
telnet mail_server 25
a postupným zadáním příkazů do telnetu
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:
R 127.0.0.1 $@ OK
nebo můžeme zkusit například
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.$+ .
-
@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 : 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.
-
jasně, to chápu...DKIM/SPF nastavené mám, takže už si jednoduše odfiltruju nežádoucí e-maily. díky za pomoc