====== Harmaalistauksen toteutus IKI:ssä (grossd konfiguraatio) ====== //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 [[faq:grossdharmaalistaus|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. ===== Johdanto ===== 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/|http://code.google.com/p/gross/]]. ===== Käytössä olevat estolistat ===== 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. ===== Grossd.conf ===== 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ä. ===== Sendmail.cf ===== 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. ===== Grossd:n asentaminen ===== IKI:ssä on käytössä NetBSD käyttöjärjestelmä. Alempana myös Linux-ohjeet. ====== NetBSD ja Sendmail ====== ===== Grossd:n asennusoptiot ===== 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:n vaatimien kirjastojen asennus ===== 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 ===== /etc/rc.d/grossd (NetBSD) ===== 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 ====== OpenSUSE Linux 10.3 ja Postfix-maileri ====== 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) ====== Mac OSX ja postfix ====== Kokeiltu OSX 10.5.8, toiminee client + server uudemmatkin. ===== Grossd asentaminen OSX:ään ===== 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''. ===== Grossd automaattinen käynnistys OSX:ssä ===== Luo tiedosto ''/Library/LaunchDaemons/com.grossd.server.plist'' ja laita sinne seuraavat määritykset: Debug KeepAlive Label com.grossd.server ProgramArguments /opt/grossd/sbin/grossd -d 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 ===== Postfix OSX:ssä ===== 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