Postfix'i SMTP AUTH üle TLS vastu Postgresql baasi Debianiga

Allikas: Kuutõrvaja
Redaktsioon seisuga 9. juuli 2009, kell 22:09 kasutajalt Imre (arutelu | kaastöö) (Postfixi seadistamine SMTP klienti autentima)

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

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

Smtp-auth-postfix-1.gif

Postfix serverile TLS krüptimise seadistamine

Selleks, et server võimaldaks TLS-krüptida smtp klientide sissetulevaid ühendusi peavad olema seadistusfailis main.cf read

 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_session_cache_database = btree:${data_directory}/smtpd_scache

kus

  • 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

Selleks, et teha kindlaks, kas postiserver toetab SMTP STARTSSL laiendust sobib öelda

 $ openssl s_client -starttls smtp -showcerts -connect 192.168.1.251:25

Kasulikud lisamaterjalid