Archiv verlassen und diese Seite im Standarddesign anzeigen : Qmail SSL Problem
Moin!
Ich habe seit Kurzem ein Problem mit meinem Mailserver (Debian 4.0, Qmail), genauer gesagt mit dem SMTP:
Kein Client kann per SSL auf den SMTP zugreifen. Bei Thunderbird wird ein Timeout gemeldet, bei Claws-Mail heißt es nur, es könne keine SSL-Verbindung aufgebaut werden.
TLS und Plaintext funktioniert jedoch ohne Probleme. An der Firewall liegt es auch nicht.
Ein Test auf der shell ergibt folgendes:
[lynix@thor ~]$ openssl s_client -connect meinedomain.de:465
CONNECTED(00000003)
16832:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:601:
Gestartet wird der SMTPd über xinetd:
service smtps
{
socket_type = stream
protocol = tcp
wait = no
disable = no
user = root
instances = 100
env = SMTPAUTH=1 END=1
server = /var/qmail/bin/tcp-env
server_args = -Rt0 /var/qmail/bin/relaylock /usr/local/bin/spamdyke -f /etc/spamdyke.conf /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
}
Hat jemand eine Idee, an was das liegen könnte?
Vielen Dank für jeden Tip im Voraus!
Gruß
lynix
derRichard
16.02.09, 18:00
hi!
was bekommst zurück wenn dich direkt mit telnet auf port 465
hängst? vielleicht stimmt nur ein pfad oder sowas nicht.
hth,
//richard
Hi, Richard!
mit telnet:
[lynix@thor ~]$ telnet meinedomain.de 465
Trying 80.xx.xx.150...
Connected to meinedomain.de.
Escape character is '^]'.
220 meinedomain.de ESMTP
QUIT
221 meinedomain.de
Connection closed by foreign host.
Also eine Session identisch zu einem Telnet-Aufruf mit Port 25. Liegt es daran? Also dass einfach SSL "weggelassen" wird? Weil mit openssl und debugmode sehe ich auch ein "220 meine....":
[lynix@thor ~]$ openssl s_client -crlf -debug -connect meinedomain:465
CONNECTED(00000003)
write to 0x170b5f0 [0x170b690] (124 bytes => 124 (0x7C))
0000 - 80 7a 01 03 01 00 51 00-00 00 20 00 00 39 00 00 .z....Q... ..9..
0010 - 38 00 00 35 00 00 16 00-00 13 00 00 0a 07 00 c0 8..5............
0020 - 00 00 33 00 00 32 00 00-2f 00 00 07 05 00 80 03 ..3..2../.......
0030 - 00 80 00 00 05 00 00 04-01 00 80 00 00 15 00 00 ................
0040 - 12 00 00 09 06 00 40 00-00 14 00 00 11 00 00 08 ......@.........
0050 - 00 00 06 04 00 80 00 00-03 02 00 80 72 22 c9 20 ............r".
0060 - ff 28 22 b0 c7 cd 41 c4-b8 af b8 e5 d9 4a d1 77 .("...A......J.w
0070 - cb 7c a8 4c 8b 75 a0 ee-49 c9 07 e6 .|.L.u..I...
read from 0x170b5f0 [0x1710bf0] (7 bytes => 7 (0x7))
0000 - 32 32 30 20 76 73 33 220 mei
6553:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:601:
Gruß
lynix
derRichard
16.02.09, 20:21
hi!
da sollte sofort in den ssl modus geschalten werden.
was verwendest du um ssl zu verwenden? (stunnel?)
hth,
//richard
Hi!
Okay, da muss ich etwas ausholen :) :
Bis vor Kurzem wurde der Qmail-SMTPd noch über inetd gestartet. Als er dann nicht mehr ging, hab ich auf xinetd gewechselt, d.h. einfach die config von inetd auf xinetd umgeschrieben; sonst hab ich nix geändert.
Auf der Box rennt Plesk 8, ich weiß leider nicht, wo/wie da der SSL erwirkt wird ^^
Wie realisiert man das normalerweise? :D
Gruß
lynix
derRichard
16.02.09, 21:20
hi!
wenn richtiges ssl, also kein tls willst dann einfach einen stunnel vorschalten.
mit stunnel kann man beliebige tcp-dienste mit ssl versehen.
hth,
//richard
Hi!
Okay, ich hab mich mal kurz in stunnel eingelesen. Ich denke ich will "normales" SSL. Aber wie baue ich das in xinetd ein?
Mal ganz abgesehen von der Frage, wie es Jahre lang funktioniert hat, d.h. wie das auf einer Plesk Standardinstallation gelöst ist :D
Gruß
lynix
Achja, auf dem Server ist noch gar kein stunnel drauf (gerade installiert). Gibts noch ne andere gängige Methode außer stunnel?
Nur interessehalber; wenn die stunnel-Methode klappt soll sie mir recht sein :)
Danke!
lynix
So, ich hab mal nach weiterem manpages-Lesen folgende xinetd.conf aufgestellt:
service smtps
{
socket_type = stream
protocol = tcp
wait = no
disable = no
user = root
instances = 100
env = SMTPAUTH=1 END=1
server = /usr/bin/stunnel
server_args = -l /var/qmail/bin/tcp-env smtps -Rt0 /var/qmail/bin/relaylock /usr/local/bin/spamdyke -f /etc/spamdyke.conf /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
}
Allerdings sehe ich mit telnet auf 465, dass stunnel das Serverzertifikat fehlt. Daher jetzt meine Frage: TLS geht ja - wo sehe ich, welches Zertifikat da verwendet wird? Das könnte ich ja dann an dieser Stelle auch benutzen oder?
Gruß
lynix
derRichard
16.02.09, 23:15
hi!
vom tls merkt (x)inetd überhaupt nichts. das tls macht der qmail-smtpd von selbst.
tls ist ja im protokoll selbst, ssl ist nur ein zusätzlicher layer.
man kann neben stunnel auch tcpserver-ssl verwenden.
es gibt dazu einiges.
ich verwende kaum ssl, tls ist um einiges feiner. :)
hth,
//richard
Hi, Richard!
Ich war bis vor kurzem auch kein Fan von SSL. Aber wenn man über eine unsichere Verbindung (unverschlüsseltes WLAN, unterwegs) mal schnell eMails checken will, fühlt man sich vielleicht mit SSL doch etwas sicherer. Mit TLS kann jeder mit einem einfachen Filter das "STARTTLS" abfangen und die Session mitschneiden :)
Ich bin mittlerweile so weit:
xinetd-config:
service smtps
{
socket_type = stream
protocol = tcp
wait = no
disable = no
user = root
instances = 100
env = SMTPAUTH=1 END=1
server = /usr/bin/stunnel
server_args = -p /var/qmail/control/servercert.pem -l /var/qmail/bin/tcp-env smtps -Rt0 /var/qmail/bin/relaylock /usr/local/bin/spamdyke -f /etc/spamdyke.conf /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
}
Test:
root@meinedomain.de:/# telnet localhost 465
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
2009.02.17 09:52:06 LOG5[11829:3083773632]: Using 'smtps' as tcpwrapper service name
2009.02.17 09:52:06 LOG4[11829:3083773632]: Wrong permissions on /var/qmail/control/servercert.pem
2009.02.17 09:52:06 LOG5[11829:3083773632]: stunnel 3.26 on i486-pc-linux-gnu PTHREAD+LIBWRAP with OpenSSL 0.9.8c 05 Sep 2006
2009.02.17 09:52:06 LOG5[11829:3083773632]: smtps connected from 127.0.0.1:39661
Allerdings funktioniert ein Verbinden per Mailclient oder openssl immer noch nicht:
root@meinedomain.de:/# openssl s_client -crlf -debug -connect localhost:465
CONNECTED(00000003)
write to 0x80bef58 [0x80bfe90] (118 bytes => 118 (0x76))
0000 - 80 74 01 03 01 00 4b 00-00 00 20 00 00 39 00 00 .t....K... ..9..
0010 - 38 00 00 35 00 00 16 00-00 13 00 00 0a 07 00 c0 8..5............
0020 - 00 00 33 00 00 32 00 00-2f 03 00 80 00 00 05 00 ..3..2../.......
0030 - 00 04 01 00 80 00 00 15-00 00 12 00 00 09 06 00 ................
0040 - 40 00 00 14 00 00 11 00-00 08 00 00 06 04 00 80 @...............
0050 - 00 00 03 02 00 80 b9 6c-a6 1e 25 c1 c2 06 a6 bc .......l..%.....
0060 - 55 65 34 07 af 95 e7 ee-58 c5 54 1d d7 ed 27 94 Ue4.....X.T...'.
0070 - b6 01 df af 8f ff ......
read from 0x80bef58 [0x80c53f0] (7 bytes => 7 (0x7))
0000 - 32 30 30 39 2e 30 32 2009.02
13452:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:567:
Hast Du noch nen Tip? :)
Gruß
lynix
Update:
Okay, ich glaube ich bin einen Schritt weiter :) SSL scheint nun zu funktionieren, aber der SMTPd wird dahinter anscheinend nicht richtig gestartet:
/etc/xinet.d/smtps
service smtps
{
socket_type = stream
protocol = tcp
wait = no
disable = no
user = root
instances = 100
env = SMTPAUTH=1 END=1
server = /usr/bin/stunnel
server_args = -D 5 -o /var/log/stunnel.log -T -p /var/qmail/control/servercert.pem -l /var/qmail/bin/tcp-env smtps -Rt0 /var/qmail/bin/relaylock /usr/local/bin/spamdyke -f /etc/spamdyke.conf /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
}
Test
root@meinedomain.de:/var/log# openssl s_client -crlf -connect localhost:465
CONNECTED(00000003)
depth=0 /C=DE/ST=Germany/L=Cologne/O=Intergenia AG/OU=Internet Service Provider/CN=meinedomain.de/emailAddress=root@meinedomain.de
verify error:num=18:self signed certificate
verify return:1
depth=0 /C=DE/ST=Germany/L=Cologne/O=Intergenia AG/OU=Internet Service Provider/CN=meinedomain.de/emailAddress=root@meinedomain.de
verify return:1
---
Certificate chain
0 s:/C=DE/ST=Germany/L=Cologne/O=Intergenia AG/OU=Internet Service Provider/CN=meinedomain.de/emailAddress=root@meinedomain.de
i:/C=DE/ST=Germany/L=Cologne/O=Intergenia AG/OU=Internet Service Provider/CN=meinedomain.de/emailAddress=root@meinedomain.de
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFCDCCA/CgAwIBAgIESMjU4zANBgkqhkiG9w0BAQQFADCBtjELMAkGA1UE BhMC
(...)
NRENKRNdxEw/SDs8ulUFwOMDlLOxEud7Le66hgX2MdvsdzLhx4caO9O2sY3EIT Ba
DFNGL85mhMx5LdB/chSkNJC4aeOo/wlqfUXYWGRcUA1me+qIez7zjYC1sUb8CdkW
ZnaKXwA025SpCE6UOg+f+huEbOUzhqLThqWkE9Ja5ZTIewp290 XVoih5hRM=
-----END CERTIFICATE-----
subject=/C=DE/ST=Germany/L=Cologne/O=Intergenia AG/OU=Internet Service Provider/CN=meinedomain.de/emailAddress=root@meinedomain.de
issuer=/C=DE/ST=Germany/L=Cologne/O=Intergenia AG/OU=Internet Service Provider/CN=meinedomain.de/emailAddress=root@meinedomain.de
---
No client certificate CA names sent
---
SSL handshake has read 1856 bytes and written 252 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID: BFD6DA085B73083855DAEF843101E765265B94A5659860A894 5A43B730347B5F
Session-ID-ctx:
Master-Key: 752B98358151D73C0C4DC9468657DC5BF0B20B518C1097118D 2660EE6AE545F665D7E3CAC334DD25693A23678D6C28EE
Key-Arg : None
Start Time: 1234863186
Timeout : 300 (sec)
Verify return code: 18 (self signed certificate)
---
closed
Das stunnel-log dazu:
2009.02.17 10:33:06 LOG5[13399:3083773632]: Using 'smtps' as tcpwrapper service name
2009.02.17 10:33:06 LOG4[13399:3083773632]: Wrong permissions on /var/qmail/control/servercert.pem
2009.02.17 10:33:06 LOG5[13399:3083773632]: stunnel 3.26 on i486-pc-linux-gnu PTHREAD+LIBWRAP with OpenSSL 0.9.8c 05 Sep 2006
2009.02.17 10:33:06 LOG5[13399:3083773632]: smtps connected from 127.0.0.1:41995
2009.02.17 10:33:06 LOG5[13399:3083773632]: Connection closed: 0 bytes sent to SSL, 0 bytes sent to socket
Der Mailclient will immer noch nicht, endet jedoch mittlerweile mit einem Timeout, ohne sich aufzuhängen ^^
Gruß
lynix
GELÖST! :)
Mit dieser config funktioniert es jetzt:
service smtps
{
socket_type = stream
protocol = tcp
wait = no
disable = no
user = root
instances = 100
env = SMTPAUTH=1 END=1
server = /usr/bin/stunnel
server_args = -D 3 -o /var/log/stunnel.log -T -p /var/qmail/control/servercert.pem -l /var/qmail/bin/tcp-env -- smtps -Rt0 /var/qmail/bin/relaylock /usr/local/bin/spamdyke -f /etc/spamdyke.conf /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true
Vielen Dank nochmal für Deine Hilfe, Richard!! :)
Gruß
lynix
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.