Tällä sivulla kerrotaan miten ja miksi grossd on konfiguroitu iki:ssä sekä esitetään miten sen asentaminen käyttöön tapahtuu esim. NetBSD, Linux ja MacOSX-palvelimissa.
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, Linux ja Postfix ja MacOSX 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://code.google.com/p/gross/.
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 = mXXXXu.zen.dq.spamhaus.net # maksullinen, noin 0.10e/jäsen/vuosi dnsbl = bl.spamcop.net dnsbl = combined.njabl.org dnsbl = dnsbl.sorbs.net
Käytössä olevat estolistat on havaittu hyvin toimiviksi ja käytännössä luotettaviksi.
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
Huom: Linux-serverissä pitää käyttää ip-osoitetta tässä asetuksessa eikä saman koneen nimeä, koska Linux mäppää nimen localhostiksi eikä ip-osoitteeksi, jolloin yhteys ei ole auki toisesta koneesta.
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)
Kokeiltu OSX 10.5.8, toiminee client + server uudemmatkin.
Asenna macports -paketista c-ares kirjasto:
port install c-ares
Käännä grossd seuraavilla asetuksilla (oletuksena että kehitystyökalut XCode on asennettu):
CPPFLAGS="-I/opt/local/include" LDFLAGS="-L/opt/local/lib" ./configure --prefix=/opt/grossd make sudo make install
Optioiden selitys: CPPFLAGS
ja LDFLAGS
kertoo mistä löytyy c-ares
-kirjasto. –prefix
sijoittaa kaiken /opt/grossd
:hen asennettaessa. Ajatuksena tässä on asentaa grossd /opt/grossd:hen erikseen kaikesta muusta ylläpidon helpottamiseksi.
Tällöin grossd:n konfiguraatio löytyy tiedostosta /opt/grossd/etc/grossd.conf
.
Luo tiedosto /Library/LaunchDaemons/com.grossd.server.plist
ja laita sinne seuraavat määritykset:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Debug</key> <false/> <key>KeepAlive</key> <true/> <key>Label</key> <string>com.grossd.server</string> <key>ProgramArguments</key> <array> <string>/opt/grossd/sbin/grossd</string> <string>-d</string> </array> </dict> </plist>
Laita tiedosto rootin omistukseen:
sudo chown root /Library/LaunchDaemons/com.grossd.server.plist
Aja sitten komento
sudo launchctl load -w /Library/LaunchDaemons/com.grossd.server.plist
jolloin prosessin pitäisi käynnistyä automaattisesti koneen bootissa.
Seuraavalla komennolla voit kokeilla onko grossd
toiminnassa normaalisti:
telnet localhost 5522
sen pitäisi tulostaa statustietoja. Statustiedot voi katsoa muutenkin ajoittain jos haluaa seurata toimintaa.
Pysäyttäminen onnistuu komennolla
sudo launchctl unload -w /Library/LaunchDaemons/com.grossd.server.plist
Voit käyttää systeemin mukana tulevaa postfixiä tai asentaa oman macports-paketista. Konfiguroi ensin postfix toimimaan muuten haluamallasi tavalla oikein.
Laita postfixin main.cf
tiedostoon seuraava asetus:
... smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination check_policy_service inet:127.0.0.1:5525 ...
Ja käynnistä postfix uudelleen.
Lokiin (/var/log/system.log
ellei muuta konfiguroitu) pitäisi alkaa tulla tällaisia rivejä per maili normaalitapauksissa (a=trust tarkoittaa että kohdetta ei harmaalistattu):
Nov 6 14:55:43 hostname com.grossd.server[31928]: Sun Nov 6 14:55:43 2011 #f070d000: a=trust d=173 w=0 c=212.16.98.50 s=XXXX@EXAMPLE.iki.fi r=XXXX@EXAMPLE.com h=EXAMPLE.iki.fi
Seuraavan laisia tulee taas mustalistatuista kohteista joita sitten harmaalistataan:
Nov 6 15:00:48 hostname com.grossd.server[31928]: Sun Nov 6 15:00:48 2011 #f070d000: a=greylist d=49 w=1 c=218.147.XXX.XXX s=XXXX@ihaa.com r=XXXX@ihaa.com h=?????? m=bl.spamcop.net+1