Smarthost
Proč jej použít? V případě rozesílání zprávy na velké množství adres, můžeme takhle ulevit svému poštovnímu serveru a lince do internetu. Za normálního stavu by se sendmail snažil odeslat zprávu na všechny adresy sám, takže email by od vás odcházel třeba 500krát. Pokud ale nastavíme smarthost (patrně to bude smtp server vašeho poskytovatele), zpráva bude odeslána jednou na smarthost a ten zařídí její další rozesílání. Toto mělo velký význam v době vytáčených linek. Nevýhodou může být další server v cestě, a tím prodloužení celého postupu. Před necelým rokem byly například dlouhodobě přetížené servery jednoho velkého poskytovatele a odesílat takto poštu bylo utrpení. Smarthost nastavíme snadno, stačí v našem mc souboru upravit řádek:
dnl define(`SMART_HOST', `your.isp.mail.server')
na
define(`SMART_HOST', `esmtp:smtp.poskytovatel.cz')dnl
Co vlastně znamená to slovíčko dnl, jsem ještě nepopisoval. Je to vysvětleno ve starším článku.
Po úpravě nezapomeňte restartovat sendmail:
cd /etc/mail make install make restart
Blacklisty
Využití některého z blacklist serverů nám může také ulevit. Tyto servery udržují databáze open relay serverů nebo IP adres, ze kterých se rozesílá spam. Vy můžete při příchodu emailu proti těmto databázím odesílatele zkontrolovat a při nálezu serveru na blacklistu zprávu rovnou odmítnout a nezatěžovat se dále s jejím zpracováním. V mc souboru je proto již připravené M4 makro. Lehce ho upravíme třeba pro použití spamcop.net:
FEATURE(`enhdnsbl', `bl.spamcop.net')dnl
Po restartu můžete v maillogu vidět podobný výsledek:
Nov 23 13:55:55 mail sm-mta[54812]: ruleset=check_relay, arg1=[200.195.166.27], arg2=127.0.0.2, relay=27.166.195.200.static.copel.net [200.195.166.27] (may be forged), reject=550 5.7.1 Rejected: 200.195.166.27 listed at bl.spamcop.net
Můžeme odesílacímu serveru i podrobněji sdělit, proč od něj poštu nechceme, stačí malá úprava v mc souboru:
FEATURE(`enhdnsbl', `bl.spamcop.net', `"Spam blocked see: http://spamcop.net/bl.shtml?"$&{client_addr}', `t')dnl
Výsledek bude teď takový:
Nov 23 00:02:49 mail sm-mta[45392]: ruleset=check_relay, arg1=81.203.250.107.dyn.user.ono.com, arg2=127.0.0.2, relay=81.203.250.107.dyn.user.ono.com [81.203.2 50.107], reject=553 5.3.0 Spam blocked see: http://spamcop.net/bl.shtml?81.203.250.107
SMTP autentizace – sendmail jako smtp klient
Vysvětlili jsme si smarthost. Může se ale objevit komplikace – server poskytovatele může chtít nějakou autentizaci. Tak to funguje třeba u serveru smtp.iol.cz
. Řešení není nijak složité, v /etc/mail si založte soubor authinfo
:
AuthInfo:smtp.iol.cz "I:uzivatel" "P:heslo"
Potom z něj vytvořte databázi:
makemap hash authinfo < authinfo
V našem konfiguračním souboru nastavte smarthost a přidejte authinfo:
define(`SMART_HOST', `smtp.iol.cz') FEATURE(`authinfo')
Po restartu sendmailu už bude sendmail posílat autentizační údaje.
SMTP autorizace uživatelů
Uživatelé často žádají dostupnost své pošty kdykoli a kdekoli. Typický obchodník jezdí s notebookem a poštu má v Outlooku. Nastavíme mu poštovní účet a může stahovat poštu. V tom problém není, ale narazit můžeme u odesílání. Třeba při roamingu v zahrančí a používání různých připojení. Těžko budme takového obchodníka učit si nastavovat správný smtp server. Proto mu dovolíme odesílat přes náš firemní server. Samozřejmě se musí nějak ověřit a po ověření mu dovolíme poštu odeslat. Pro začátek si předvedeme nejzákladnější autentizaci. Heslo se posílá zakódovaně, ale stále je odposlechnutelné a patrně i rozluštitelné. V dalších pokračováních si přidáme ještě TLS.
Pro ověřování uživatelů si nainstalujeme autentikační server Cyrus-SASL2.
cd /usr/ports/security/cyrus-sasl2 make install
V menu zaškrtněte AUTHDAEMON, LOGIN, PLAIN, CRAM a DIGEST
. Nechceme použít PLAIN
– heslo by se posílalo v nešifrované podobě a byl by možný jeho odposlech. Upravte soubor /usr/local/lib/sasl2/Sendmail.conf
na:
pwcheck_method: saslauthd
Zajistíme automatické spouštění démona při startu serveru, do /etc/rc.conf
přidáme:
saslauthd_enable="YES"
Démona si pro teď ručně spustíme:
/usr/local/etc/rc.d/saslauthd start
Jestli cyrus pracuje správně, můžeme ověřit programem testsaslauthd
root@mail cyrus-sasl2 # testsaslauthd -u uzivatel -p dobreheslo 0: OK "Success." root@mail cyrus-sasl2 # testsaslauthd -u uzivatel -p spatneheslo 0: NO "authentication failed"
Následně zkompilujeme sendmail s podporou autentifikace. Teoreticky můžeme použít i verzi z ports tree. Je tam připraven například sendmail+tls+sasl2+ldap. K tomu se dostaneme příště. Dnes tedy kompilace sendmailu, který je přímo v systému. V souboru /etc/make.conf
si odkomentujeme následující řádky. Pozor, odstraňte všechny mezery, řádek musí začínat písmenem:
SENDMAIL_CFLAGS=-I/usr/local/include/sasl -DSASL SENDMAIL_LDFLAGS=-L/usr/local/lib SENDMAIL_LDADD=-lsasl2
Pokud make.conf
nemáte, vytvořte jej a řádky do něj zapište. Další možností je zkopírovat a upravit vzorový make.conf
z /usr/share/examples/etc/make.conf
.
Vlastní kompilaci provedeme takto:
# cd /usr/src/lib/libsmutil # make cleandir && make obj && make # cd /usr/src/lib/libsm # make cleandir && make obj && make # cd /usr/src/usr.sbin/sendmail # make cleandir && make obj && make && make install
Do mc souboru přidáme:
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
A po restartu sendmailu máme hotovo. Ještě malé ověření. Stav bez autentifikace:
root@mail # telnet localhost 25 ehlo localhost 250-mail.firma.cz Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-DELIVERBY 250 HELP
A pokus o odeslání:
Nov 25 22:55:06 mail sm-mta[84268]: mAPLt55w084268: ruleset=check_rcpt, arg1=<pm@nekde.cz>, relay=xxx-yyy-54ghz.customer.jinde.cz [199.199.199.199], reject=550 5.7.1 <pm@nekde.cz>... Relaying denied. Proper authentication required.
A po nastaveni autentifikace:
root@mail # telnet localhost 25 ehlo localhost 250-mail.firma.cz Hello localhost [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN 250-DELIVERBY 250 HELP
A odeslání:
Nov 25 22:53:11 mail sm-mta[84239]: AUTH=server, relay=xxx-yyy-54ghz.customer.jinde.cz [199.199.199.199], authid=pm, mech=LOGIN, bits=0
Teď už jen stačí nastavit správně klienta. V outlook expressu v nastavení účtu na záložce servery stačí dole zaškrtnout "Server požaduje ověření"
a v nastavení musí být zvoleno "Používat stejné nastavení jako pro server příchozí pošty"
.