Tällä sivulla kerrotaan miten ja miksi grossd on konfiguroitu iki:ssä sekä esitetään miten sen asentaminen käyttöön tapahtuu esim. NetBSD ja Linux-palvelimissa.
(16.5.2008 haa)
Tämä sivu on tarkoitettu sähköpostijärjestelmien ylläpitäjille avuksi ja vinkiksi. Tavallisen käyttäjän ohjeita sekä taustatietoja löytyy mm. FAQ-sivulta Harmaalistaa estolistatut lähettäjät.
Tältä sivulta löytyy myös asennusohjeet ympäristöihin NetBSD ja Sendmail sekä Linux ja Postfix.
Tämä sivu kuvaa konfiguraatiota 18.5.2008, voi olla että sen jälkeen sitä on hienosäädetty ilman että tätä FAQ-sivua on muistettu päivittää.
Lisätietoja itse Grossista löytyy osoitteesta http://gross.googlecode.com.
IKI:ssä on käytössä seuraavat estolistat. Näiden listojen perusteella ei siis estetä postia kokonaan, listoilla oleviin sovelletaan harmaalistausta. Oikea posti tulee siis näistäkin paikoista läpi mutta pienellä viiveellä.
dnsbl = bl.spamcop.net;2 dnsbl = combined.njabl.org dnsbl = cbl.abuseat.org dnsbl = dnsbl.sorbs.net
Maksullinen zen.spamhaus.org-lista aiotaan myös ottaa käyttöön lähiaikoina.
Iki:n palvelimissa konfiguraatiota on muutettu oletuksesta seuraavasti oletusasetuksista.
grey_delay = 180
Tämä asetus määrää että ensimmäisen harmaalistatun yrityksen jälkeen voi onnistua vasta 3 minuutin kuluttua. Oletusarvo oli ainakin joskus 10 sekuntia joka on turhan lyhyt – kuulemma jotkut spämmiohjelmat yrittävät parin sekunnin välein jonkin aikaa jos onnistuisivat pääsemään läpi.
number_buffers = 13 rotate_interval = 7200
IKI:ssä halutaan pitää sallittu harmaalistaus (eli onnistunut uudelleen yritys) voimassa noin 24h, sen jälkeen viestit harmaalistataan uudelleen. Nämä asetukset tarkoittavat että tiedot ovat voimassa noin 13*2h ajan eli vähintään 24h. Grossissa on käytössä kiertävä lista filtteripuskureita joilla aikamääre saadaan aikaan.
sync_listen = TAMAKONE.iki.fi sync_peer = TOINENMX.iki.fi
Tämä asetus aktivoi ja konfiguroi kahden postipalvelimen välisen synkronoinnin joka on ehdottomasti suositeltava asetus jos samalla domainilla on useita MX-palvelimia, kuten iki:llä on kaksi. Tällä hetkellä gross tukee vain kahden palvelimen välistä synkronointia. Tämä tarkoittaa että palvelimet jakavat tietoja keskenään eli kun joku asia on kerran katsottu, niin sitten molemmat palvelimet tietävät sen.
statefile = /var/db/grossd/grossd.state
Tämä asetus aktivoi tilatiedoston, eli jos grossd:n käynnistää uudelleen tms niin se ei kadota tilatietojaan vaan löytää ne täältä. Tilatiedoston käyttöönotto vaati tilatiedoston luomisen ensin käsin, esim: mkdir /var/db/grossd; chown nobody /var/db/grossd; grossd -C.
protocol = milter
Tämä laittaa milter-rajapinnan käyttöön. IKI:ssä käytetään toistaiseksi Sendmailia MTA:na ja se keskustelee suodattimien kanssa milter-rajapinnalla.
milter_listen = inet:5523@localhost
Tämä kertoo missä portissa gross kuuntelee milter-pyyntöjä.
Sendmailissa milter-rajapinta on konfiguroitu käyttöön seuraavilla asetuksilla. Tämä on tehty IKIgross.mc -tiedostoon josta makroilla sitten genetoiruu IKIgross.cf -tiedosto joka on se ”tunnetusti kauhea” sendmail.cf. Mc-tiedostot ovat onneksi aika simppeleitä.
INPUT_MAIL_FILTER(`Gross', `S=inet:5523@localhost, T=C:10m;R:5m')
Tässä S= -asetukset ovat siis samat kuin grossille annetut. T= timeout -asetukset oletuksena olivat iki:ssä turhan lyhyitä jolloin hidas DNS-vastaus tms saattoi aiheuttaa timeoutteja. Yllä annetut arvot ovat aika konservatiivisia varmuuden vuoksi vielä testikäyttövaiheessa, yhteyden avaaminen milteriin 10 minuuttia ja milter-vastauksen odottelu 5 minuuttia.
Jos sendmail havaitsee että milter ei vastaa, se lopettaa tietojen kyselemisen sieltä, eli jos grossd menee jostain syystä rikki, niin sendmail toimii sitten ilman suodatusta.
IKI:ssä on käytössä NetBSD käyttöjärjestelmä. Alempana myös Linux-ohjeet.
IKI:ssä käytettiin seuraavaa configure-komentoa:
CFLAGS="-g -O -Wall" CPPFLAGS="-I/usr/pkg/include -DFD_SETSIZE=2048" LDFLAGS=-L/usr/pkg/lib ./configure --enable-milter
Optioiden selitys:
FLAGS=”-g -O -Wall”: Debug-optio päälle jotta mahdollista coredumppia voi katsoa debuggerilla. Kaikki varoitukset päälle huvin vuoksi.
CPPFLAGS=-I/usr/pkg/include ja LDFLAGS=-L/usr/pkg/lib: IKI käyttää NetBSD -käyttöjärjestelmää tällä hetkellä, jonka lisäkirjastot ovat hieman oudossa paikassa joka pitää kertoa configurelle.
CPPFLAGS=”-DFD_SETSIZE=2048” tarvittiun koska muuten NetBSD:n selectin bittimaski on maksimissaan 256 filedescriptoria ja iki:ssä grossd-prosessin tiedostomäärä on asetettu korkeammaksi jotta varmasti kaikki yhteydet mahtuu toimimaan.
–enable-milter: Tämä kytkee milter-rajapinnan tuen päälle.
Grossd tarvitsee libmilter (Sendmailin kansa) ja libcares (asynkroniset nimipalvelukutsut) -kirjastot toimiakseen.
NetBSD:ssä libmilter pitää myös kääntää isommalla FD_SETSIZE -optiolla jotta suuri määrä avoimia milter-socketteja toimii kunnolla:
cd /usr/pkgsrc/mail/libmilter; CPPFLAGS="-DFD_SETSIZE=2048" make update.
IKI:n netbsd-koneissa on käytössä seuraava käynnistysscripti grossd:lle.
Huomioitavaa on ulimit -n 2048 joka kasvattaa prosessin maksimi tiedostomäärän oletuksena olevasta 64:n rajoituksesta reilusti isommaksi. Asiakas sendmail-prosesseja saattaa olla yhtäaikaa 700+ kpl ajossa serverissä ja muitakin verkkoyhteyksiä (DNS-kyselyt) tarvitaan.
#!/bin/sh
#
# NetBSD startup script for grossd
#
# PROVIDE: grossd
# REQUIRE: named
# BEFORE: mail
$_rc_subr_loaded . /etc/rc.subr
name="grossd"
rcvar=$name
command="/usr/local/sbin/${name}"
required_files="/usr/local/etc/grossd.conf"
grossd_chdir=/root/grossd
ulimit -n 2048
extra_commands="statistics"
statistics_cmd=grossd_statistics
grossd_statistics()
{
telnet -4 localhost 5522 | grep Grossd
}
load_rc_config $name
run_rc_command "$1"
# EOF
Nämä ohjeet saattavat toimia jossain toisessakin Linux-variantissa. Imuroi ensin, käännä ja asenna ensin c-ares -kirjasto ja grossd. Editoi sitten ylläolevien vinkkien mukaan grossd:n konfiguraatio-tiedosto haluamallasi tavalla. Konfiguroi Postfix laittamalla main.cf tiedostoon seuraavanlainen asetus:
...
smtpd_recipient_restrictions =
permit_mynetworks
reject_unauth_destination
check_policy_service inet:127.0.0.1:5525
...
Laita sitten seuraava scripti tiedostoon /etc/init.d/grossd
#!/bin/sh
#
# LSB compatible service control script; see http://www.linuxbase.org/spec/
#
### BEGIN INIT INFO
# Provides: grossd
# Required-Start: $network
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: grossd Grossd
# Description: Grossd
# Intelligent Greylisting
### END INIT INFO
grossd_BIN=/usr/local/sbin/grossd
test -x $grossd_BIN || { echo "$grossd_BIN not installed";
if [ "$1" = "stop" ]; then exit 0;
else exit 5; fi; }
. /etc/rc.status
rc_reset
case "$1" in
start)
echo -n "Starting grossd "
/sbin/startproc $grossd_BIN
rc_status -v
;;
stop)
echo -n "Shutting down grossd "
/sbin/killproc -TERM $grossd_BIN
rc_status -v
;;
restart)
$0 stop
$0 start
rc_status
;;
status)
echo -n "Checking for service grossd "
/sbin/checkproc $grossd_BIN
rc_status -v
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
rc_exit
Aseta grossd käynnistymään komennolla insserv grossd ja sen jälkeen käynnistä grossd ja postfix uudelleen /etc/init.d/grossd start ja /etc/init.d/postfix restart. Kokeile että kaikki toimii OK.
(5.9.2008 haa, thanks to jake)