Kašnjenje mailova s Gmaila i Yahooa
U proteklom tjednu smo na Helpdesku za sistemce zaprimili dosta upita zbog "kašnjenja", odnosno "vraćanja" mailova s popularnih besplatnih e-mail servisa Google i Yahoo. Problemi su bilo vrlo slični, ali su logovi pokazivali i određene razlike u konfiguracijama na poslužiteljima. No, svima je zajedničko to što SSL sloj nije bio dobro podešen u Postfixu, te primanje i slanje maila preko SMTPS protokola nije bio moguć, ili je bio otežan.
Probleme su uglavnom imali kolege s nepodešenim SSL/TLS slojem, ili je Postfix bio podešen da rabi krive certifikate. Oni su mogli dobiti poruke u logovima ovog tipa:
454 4.7.0 TLS not available due to local problem
Oni koji su manje-više dobro podesili Postfix rabeći Comodo certifikate, mogli su usprkos tome dobiti ovakvu poruku o greški (njih ćemo svrstati u drugu skupinu):
Jun 2 14:01:40 posluzitelj postfix/smtp[12210]: certificate verification
failed for gmail-smtp-in.l.google.com[74.125.79.27]:25: untrusted issuer
/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
Navest ćemo jednostavan recept za one iz prve skupine, kojima SSL zapravo uopće ne radi kako treba:
1. obrisat ćemo stare (pretpostavljamo da su neispravni ili zastarjeli) i napravimo nove samopotpisane (self-signed) certifikate:
# rm -f /etc/ssl/certs/postfix.pem /etc/ssl/certs/postfix.key
# dpkg-reconfigure postfix-cn
2. u datoteci /etc/postfix/master.cf provjerimo postoji li redak:
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
Ukoliko ne postoji, trebate upisati točno kako piše umjesto postojećeg "smtps" retka (sve treba upisati u jedan redak!)
3. u datoteci /etc/postfix/main.cf redak
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
zamijenimo sa
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
4. još treba provjeriti jesu li u main.cf uključene dvije varijable
smtp_tls_security_level = may
smtpd_tls_security_level = may
Oblik varijabli smtp_use_tls i smtpd_use_tls je od Postfixa 2.3 zastario, ali se još može rabiti.
5. sada možemo restartati Postfix:
# /etc/init.d/postfix restart
ili pravilnije
# invoke-rc.d postfix restart
6. provjerimo radi li SSL/TLS:
# openssl s_client -connect posluzitelj.domena.hr:smtps
Rezultat bi morao biti sličan ovome:
CONNECTED(00000003)
depth=0 /O=Postfix SMTP
daemon/OU=oliver/CN=posluzitelj.domena.hr/emailAddress=root@posluzitelj.domena.
verify error:num=18:self signed certificate
verify return:1
depth=0 /O=Postfix SMTP
daemon/OU=oliver/CN=posluzitelj.domena.hr/emailAddress=root@posluzitelj.domena.
verify return:1
---
Certificate chain
0 s:/O=Postfix SMTP
daemon/OU=oliver/CN=posluzitelj.domena.hr/emailAddress=root@posluzitelj.domena.
i:/O=Postfix SMTP
daemon/OU=oliver/CN=posluzitelj.domena.hr/emailAddress=root@posluzitelj.domena.
...
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID:
ADA7F71545B51009AC3A619F9964FCE1789C4DB72CD3C22880A6F2D8A4E52DCE
Session-ID-ctx:
Master-Key:
1C733BDF296235C2197C00472E25AC9CE036E234FDE046FE1D4DC6FE9CAE567D3438E1B3F39
Key-Arg : None
Start Time: 1307102308
Timeout : 300 (sec)
Verify return code: 18 (self signed certificate)
---
220 posluzitelj.domena.hr ESMTP Postfix (Debian/GNU)
Ostaje nam navesti rješenje za one koji imaju uredno podešen SSL (ili čak i Comodo certifikate), ali svejedno imaju problema sa Gmailom. U ovom slučaju problem je u tome što Postfix iz nekog razloga ne zna za root Certificate Authority (CA) certifikate za Equifax. Postfixu možemo reći gdje su certifikati na dva načina, a mi smo odabrali način kad su svi certifikati u jednoj velikoj datoteci, ca-certificates.crt. U main.cf upišite:
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtpd_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
Nakon ovoga, kao i u prethodnom slučaju, treba restartati Postfix. Pošaljite testne mailove, a ukoliko se greške u logovima (mail.log, mail.err) i dalje javljaju, probajte skinuti root CA certifikat direktno:
# cd /etc/ssl/certs
# wget https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.cer
# cat Equifax_Secure_Certificate_Authority.cer >> ca-certificates.crt
I naravno, opet treba restartati Postfix. Sada bi trebalo raditi, a ukoliko to ipak nije slučaj, treba vidjeti što piše u logovima kod slanja maila, jer možda je kod vas potrebno još nešto podesiti.
Dakle, zaista je krajnje vrijeme da podesite svoj poslužitelj tako da ima ispravne certifikate, a time i zaštićene i vjerodostojne servise prema klijentskim računalima. U tome neka vam pomogne članak na adresi http://sistemac.carnet.hr/node/315, dok Comodo certifikat možete zatražiti preko stranice http://www.carnet.hr/sc_servis .
- Inačica za ispis
- Logirajte se za dodavanje komentara
- PDF version
Komentari
Postfixu možemo reći gdje su
Postfixu možemo reći gdje su certifikati na dva načina, a mi smo odabrali način kad su svi certifikati u jednoj velikoj datoteci, ca-certificates.crt.
A koji je drugi način, za one koji kao CAfile koriste Comodo chain?
U main.cf staviti primjerice:
Dakle, najbolje bi onda bilo
Dakle, najbolje bi onda bilo skinuti Equifaxov certifikat i njega i Comodo chain nadodati u ca-certificates.crt i onda postaviti:
Ispravak naredbe
Posljednju naredbu u tekstu bi trebalo ispraviti tako da bude
(datoteka je prethodno preimenovana s
mv
).self-signed certifikati
Je li za self-signed certifikate normalno da se javljaju ovakvi zapisi ili se i to može/treba riješiti:
Pokušavam se sjetiti jesam li i prije viđao takve poruke u logovima, ali nikako se ne mogu sjetiti, tj. nekako mi se čini da nisam...
Normalno je
Kako cete provjeriti istinitost kad certifikat nije potpisan od strane CA (Certificate Authorityja)? Self-signed certifikat moze napraviti svatko, i ne treba mu vjerovati....