Postfix'i SMTP AUTH üle TLS vastu Postgresql baasi Debianiga
Sisukord
Sissejuhatus
Eesmärgiks on seadistada käima Postfix SMTP server selliselt, et kirja väljasaatmiseks saaks kasutaja suvaliselt ip aadressilt pöörduda, kasutaja autenditakse ning kasutaja saab kirju välja saata. Autentimine on oluline kuna vastasel korral oleks tegu nn avaliku releega (ingl. k. open relay).
Postgresql andmebaasi ettevalmistamine
TODO
SASL ettevalmistamine
Cyrus SASL teekide ja utiliitide paigaldamiseks tuleb öelda
# apt-get install libsasl2-modules sasl2-bin
SASL seadistusfailis /etc/default/saslauthd peab sisalduma
# egrep -v "^$|^#" /etc/default/saslauthd START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="pam" MECH_OPTIONS="" THREADS=5 OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
Seadistusfailis näidatud kataloogis /var/spool/postfix/var/run/saslauthd asub nimega soket
# file /var/spool/postfix/var/run/saslauthd/mux /var/spool/postfix/var/run/saslauthd/mux: socket
ja ta asub /var/spool/postfix kataloogis, kuna postfix kasutaja töötab chroot keskkonnas.
PAM ettevalmistamine
# apt-get install libpam-pgsql
libpam-pgsql mooduli seadistusfail on /etc/pam_pgsql.conf
host= 192.168.1.247 database = auth user = cyrus password = parool table = cyrus user_column = username pwd_column = passwd expired_column = expire_status newtok_column = newtok debug pw_type = md5
Postfix kasutab autentimiseks moodulit /etc/pam.d/smtp mille sisu võiks olla selline
auth required pam_pgsql.so account required pam_pgsql.so password required pam_pgsql.so
SASL ja PAM testimiseks sobib öelda
$ testsaslauthd -u mart -p parool -f /var/spool/postfix/var/run/saslauthd/mux -s smtp 0: OK "Success."
Postfixi seadistamine SMTP klienti autentima
Selleks, et Postfix server teaks, kuidas SASL abil kasutajat autentida peab näitama /etc/postfix/sasl/smtpd.conf failis ära SASL soketi asukoha postfix kasutaja chroot keskkonna suhtes
# cat /etc/postfix/sasl/smtpd.conf pwcheck_method: saslauthd saslauthd_path: /var/run/saslauthd/mux mech_list: plain login
Ja selleks, et Postfix pääseks seda soketit kasutama tuleb lisada kasutaja postfix gruppi sasl, failis /etc/group peab olema rida
sasl:x:45:postfix
Tulemusena
# id postfix uid=102(postfix) gid=105(postfix) groups=105(postfix),45(sasl)
Postfix /etc/postfix/main.cf seadistusfaili smtp kliendi autentimist puudutav osa võiks olla nt selline, kusjuures antud juhtumil toimub andmevahetus sh smtp kasutajanime ja parooli liikumine üle võrgu avatekstina
smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination smtpd_sasl_authenticated_header = yes broken_sasl_auth_clients = yes
SMTP AUTH kliendi kasutamine
Siinkohal on asjakohane katsetada mõne moodsama SMTP kliendiga, nt Icedove kas õnnestub SMTP autentimine. Selleks tuleks konto juures väljamineva serveri juures kasutada selliseid valikuid
Kui nii seadistatud SMTP serveri kirja välja saata, siis kliendi käest küsitakse parooli ning serveri logisse tekivad sellised kirjed
Jul 9 22:00:48 post-lenny postfix/smtpd[4841]: connect from moraal.auul [192.168.10.10] Jul 9 22:00:52 post-lenny postfix/smtpd[4841]: 9B1D3AC10E: client=moraal.auul[192.168.10.10], sasl_method=PLAIN, sasl_username=mart Jul 9 22:00:52 post-lenny postfix/cleanup[4845]: 9B1D3AC10E: message-id=<4A563E5F.3020201@moraal.auul> Jul 9 22:00:52 post-lenny postfix/qmgr[4839]: 9B1D3AC10E: from=<mart@loomaaed.tartu.ee>, size=521, nrcpt=1 (queue active) Jul 9 22:00:52 post-lenny postfix/smtpd[4841]: disconnect from moraal.auul[192.168.10.10] Jul 9 22:00:53 post-lenny postfix/smtp[4846]: 9B1D3AC10E: to=<priit@loomaaed.tartu.ee>, \ relay=mail.loomaaed.tartu.ee[192.168.32.82]:25, \delay=1.2, delays=0.32/0/0.58/0.35, dsn=2.0.0, status=sent \ (250 2.0.0 Ok: queued as 5C4B64A9C7) Jul 9 22:00:53 post-lenny postfix/qmgr[4839]: 9B1D3AC10E: removed
Kirja päisesse on lisatud iseloomulik päiserida 'Authenticated sender'
Received: from moraal.auul (moraal.auul [192.168.10.10]) (Authenticated sender: mart) by post-lenny.auul (Postfix) with ESMTPA id 9B1D3AC10E for <priit@loomaaed.tartu.ee>; Thu, 9 Jul 2009 22:00:52 +0300 (EEST)
Postfix serverile TLS krüptimise seadistamine
Eelmises punktis seadistatud SMTP+AUTH lahendust on asjakohane täiendada autenditud smtp kliendi jaoks andmevahetuse, sh kasutajanime ja parooli esitamise ajal toimuva andmevahtuse, krüptimisega. Postfix server krüptib smtp klientide sissetulevaid ühendusi kui seadistusfailis /etc/postfix/main.cf kasutada selliseid direktiive
smtpd_tls_key_file = /etc/postfix/serdid/smtp.loomaaed.tartu.ee.pem smtpd_tls_cert_file = /etc/postfix/serdid/smtp.loomaaed.tartu.ee.crt smtpd_tls_CAfile = /etc/postfix/serdid/loomaaed-ca.crt smtpd_use_tls=yes smtpd_tls_loglevel = 1 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
kus
- smtpd_use_tls - TLS on sisselülitatud
- smtpd_tls_key_file näitab, millises failis asub sertifikaadile vastav salajane võti
- smtpd_tls_cert_file näitab, millises failis asub sertifikaat
- smtpd_tls_CAfile näitab, millises failis asuvad sertifikaadi allkirjastanud ahela ülemised sertifikaadid
- smtpd_tls_loglevel - logimise tase
Selleks, et teha kindlaks, kas postiserver toetab SMTP STARTSSL laiendust sobib öelda
$ openssl s_client -starttls smtp -showcerts -connect 192.168.1.251:25
Selliselt seadistatud server teenindab endiselt nö tavalisi smtp kliente ja peab ühendust tavaliste teiste smtp serveritega, aga suudab teenindada smtp kliente kasutades krüptimist kui klient seda nõuab.
Kasulikud lisamaterjalid
- http://www.postfix.org/SASL_README.html
- zless /usr/share/doc/postfix/TLS_README.gz
- http://www.lxtreme.nl/index.pl/docs/linux/dovecot_postfix_pam
- http://www.fatofthelan.com/articles/articles.php?pid=22