< Linux főoldal

Postfix SMPT azonosítás

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 

Irodalom

 
postfix_azonosítás.txt · Utolsó módosítás: 2010/06/10 19:48 szerkesztette: admin
 
Hacsak máshol nincs egyéb rendelkezés, ezen wiki tartalma a következő licenc alatt érhető el:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki