Odpovedi na sendmail

Milan Kerslager milan.kerslager na spsselib.hiedu.cz
Pátek Leden 21 14:31:16 CET 2000


Sendmail se konfiguruje pomoci makrojazyka M4.
Nejjednodussi je, kdy si nainstalujete baliky sendmai a sendmail-cf.
Vzor konfiguracniho souboru, ktery je pouzit RedHatama, se nachazi v
/usr/lib/sendmail-cf/cf/redhat.mc. Ja vzdycky delam:

cp /usr/lib/sendmail-cf/cf/redhat.mc /etc/mail/muj.m4
cd /etc/mail

Edituju m4 soubor, aby vypadal asi takhle:
divert(-1)
include(`/usr/lib/sendmail-cf/m4/cf.m4')
define(`confDEF_USER_ID',``8:12'')
define(`confTRY_NULL_MX_LIST', True)
define(`confAUTO_REBUILD')
define(`confTO_CONNECT', `1m')
define(`confDONT_PROBE_INTERFACES',true)
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')
define(`confEBINDIR', `/usr/sbin/smrsh')
OSTYPE(`linux')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')
FEATURE(relay_entire_domain)
FEATURE(redirect)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
FEATURE(smrsh)
FEATURE(access_db, `hash -o /etc/mail/access')
FEATURE(blacklist_recipients)
FEATURE(rbl)
dnl FEATURE(mailertable, `hash -o /etc/mail/mailertable')
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')
MAILER(procmail)
MAILER(smtp)

radky zacinajici na dnl jsou poznamky (zakomentovane radky)

neptun:/etc/mail# cat access
localhost.localdomain           RELAY
localhost                       RELAY
sexamp.com      550 You are a known spammer
194.108.45      RELAY
194.212.146.66  RELAY
194.212.146.129 RELAY

Relaying (tj. prijem posty via SMTP) je povoleny z cele site 194.108.45
a pak jeste ze dvou IP adres. Co se tam da vsechno napsat, najdete v:
/usr/lib/sendmail-cf/README. Diky FEATURE(blacklist_recipients) muzu do
access souboru napsat i konkretni osobu:

john.rambo na jungle.vietnam.asia  550 You are a known spammer
odporny na spammer.cz	        REJECT

neptun:/etc/mail# cat virtusertable
# vyjimky z pravidel
ke na spsselib.hiedu.cz                    kerslage na pluto.spsselib.hiedu.cz
milan.kerslager na spsselib.hiedu.cz       kerslage na pluto.spsselib.hiedu.cz
# jinak vse na Prum
@spsselib.hiedu.cz                      %1 na prum.spsselib.hiedu.cz

Pravidla, ktera jsou ve virtusertable, se aplikuji i na pruchozi maily
(napr. smerovane pomoci MX zaznamu). Mailertable slouzi k presmerovavani
celych domen, masina musi byt pro postu koncovym strojem (podle MX, ve
skutenosti jede posta jeste dal)

neptun:/etc/mail# cat mailertable
# posta pro domenu jinde.cz se bude predavat na muj.pocitac.cz
jinde.cz        esmtp:muj.pocitac.cz

To, ze je sendmail pro postu koncovy, pozna podle jmena masiny, na ktere
bezi. Pokud ma byt koncovy i pro jinde.cz, musi se to napsat do
/etc/sendmail.cw (jeden zaznam na radek).

ABych nemusel databaze po uprave aktualizovat rucne, mam takovy
Makefile:
neptun:/etc/mail# cat Makefile
#all: virtusertable.db access.db domaintable.db mailertable.db
sendmail.cf
all: virtusertable.db access.db sendmail.cf

%.db : %
        makemap hash $@ < $<

sendmail.cf: muj.m4
        m4 muj.m4 > sendmail.cf
        cp -i sendmail.cf /etc
        /etc/rc.d/init.d/sendmail restart

clean:
        rm -f *.db *~ sendmail.cf

odsazene radky obsahuji tabelatory. Pak uz dam jen make a je to.

Posledni finta jsou automaticke prepisy v adresach:
Pokud chci, aby veskera odchozi posta z meho stroje mela v adresach
misto stroj.nekde.cz jenom nekde.cz, pouziju v M4 souboru tyto volby:

MASQUERADE_AS(nekde.cz)
FEATURE(allmasquerade)
FEATURE(masquerade_envelope)

Pokud chci veskerou postu ode me posilat na nejakou relay (napr.
firewall), nastavim:
define(`SMART_HOST', `esmtp:fire.wall.cz')

Vsechno je popsano ve zminenem README i s prikladama.

-- 
                        Milan Kerslager
                        E-mail: milan.kerslager na spsselib.hiedu.cz
                        WWW:    http://www.spsselib.hiedu.cz/~kerslage/


Další informace o konferenci Sendmail