====== 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