Az alábbiakban beállításra kerül SASL azonosítás és TLS-en keresztüli azonosítás is.
Szerkesszük a Postfix main.cf állományát:
cd /etc/postfix vi main.cf
Vegyük fel az azonosításhoz szükséges adatokat:
smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_sasl_auth_enable = yes smtpd_sasl_type = cyrus local_recipient_maps = smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
Állítsuk be a 465 portot postfix számára:
vi master.cf
A következő sorokat adjuk a master.cf fájlhoz:
smtps inet n - n - - smtpd
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_sender=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o broken_sasl_auth_clients=yes
vi /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd mech_list: plain login
Készítsük el az SSL tanúsítványokat:
mkdir /etc/postfix/ssl cd ssl/ openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024 chmod 600 smtpd.key openssl req -new -key smtpd.key -out smtpd.csr openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt openssl rsa -in smtpd.key -out smtpd.key.unencrypted mv -f smtpd.key.unencrypted smtpd.key openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
Készítsünk egy tanúsítványt, amit az Internet Exploler (az Outlook számára) / Thunderbird.
openssl pkcs12 -export -in smtpd.crt -inkey smtpd.key -out OutlookSMTP.p12
A postfix konfiguráció újratöltése:
/etc/init.d/postfix reload
Hogy kapcsolódni tudjanak gépünkhöz iptables szabály a levelezőszerver scriptjében:
$IPTABLES -A INPUT -i $EXTIF -p tcp -s $UNIVERSE -d $EXTIP --destination-port 465 -j ACCEPT
Ha tűzfal mögött van, akkor a tűzfalscriptbe (Feltételezzük, hogy a szerver IP címe 192.168.1.4):
$IPTABLES -A FORWARD -i $EXTIF -p tcp --dport 465 -d 192.168.1.4 -o $INTIF -j ACCEPT $IPTABLES -A FORWARD -o $EXTIF -p tcp --sport 465 -s 192.168.1.4 -i $INTIF -j ACCEPT $IPTABLES -t nat -A PREROUTING -i $EXTIF -p tcp -d $EXTIP2 --dport 465 -j DNAT --to 192.168.1.4:465
Ellenőrzés
netstat -ntpl | grep master
tcp 0 0 127.0.0.1:10025 0.0.0.0:* LISTEN 8366/master tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 8366/master tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 8366/master
telnet localhost 465
[root@ls1 postfix]# telnet localhost 465 Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 yourserver ESMTP Postfix ehlo me 250-yourserver 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250 8BITMIME ^] telnet> quit Connection closed. [root@ls1 postfix]#
Teszteléshez készítsünk egy felhasználónév, jelszó párost kódolva Base64 Mime kódolással, a következő scripttel:
encode_sasl_plain.pl
#!/usr/bin/perl
use strict;
use MIME::Base64;
if ( $#ARGV !=1) {
die "Usage: encode_sasl_plain.pl <username> <password>\n";
}
print encode_base64("$ARGV[0]?$ARGV[0]?$ARGV[1]");
exit 0;
encode_sasl_plain.pl <username> <password>
Az eredmény valami ilyesmi: dmFsYWtpP3ZhbGFraT90aXRvaw==
telnet localhost 465
Trying 127.0.0.1... Connected to localhost.localdomain (127.0.0.1). Escape character is '^]'. 220 yourserver ESMTP Postfix ehlo me 250-yourserver 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN AUTH PLAIN dmFsYWtpP3ZhbGFraT90aXRvaw== 235 2.0.0 Authentication successful
Ha az azonosítás sikertelen akkor lehet, le kell cserélni a MATCH értéket a /etc/…
Újraindítás
/etc/init.d/saslauthd restart
telnet yourserver 465
user@gep:~$ telnet yourserver 465 Trying your-ip... Connected to yourserver. Escape character is '^]'. 220 yourserver ESMTP Postfix ehlo me 250-yourserver 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN AUTH PLAIN dmFsYWtpP3ZhbGFraT90aXRvaw== 235 2.0.0 Authentication successful
Az ellenőrzés másként
$ perl -MMIME::Base64 -e 'print encode_base64("\000valaki\@valahol.net\000titkos.jelszo")'
dmFsYWtpP3ZhbGFraT90aXRvaw==
$ telnet youserver 25
$ telnet 1.2.3.4 25 220 a.mx.valahol.net NO UCE ESMTP ehlo testing 250-a.mx.valahol.net NO UCE 250-STARTTLS 250-PIPELINING 250 8BITMIME quit
$ openssl s_client -starttls smtp -crlf -connect youserver:25
SSL szerver
$ openssl s_client -crlf -connect 1.2.3.4:465
AUTH PLAIN dmFsYWtpP3ZhbGFraT90aXRvaw== 235 ok, go ahead (#2.0.0)
Sikertelen azonosítás esetén
AUTH PLAIN dmFsYWtpP3ZhbGFraT90aXRvaw== 535 authorization failed (#5.7.0)
Levél küldése:
mail from: 250 ok rcpt to: 250 ok data 354 go ahead From: Joe To: Nobody Subject: test01 Helló, itt a tesz! . 250 ok 1113954693 qp 29052 quit 221 a.mx.valahol.net NO UCE