Verbindung zu SMTP Server ohne telnet oder nc testen

Um die Verbindung zu einem SMTP Server zu testen um zum Beispiel einen Fehler durch eine Firewall auszuschließen nutze ich normalerweise telnet:

user@host ~ $ telnet mail.example.net 25
Trying 1.2.3.4...
Connected to mail.example.net.
Escape character is '^]'.
220 mail.example.net ESMTP Postfix

Wenn telnet nicht installiert ist geht das auch noch mit netcat:

user@host ~ $ nc mail.example.net 25
220 mail.example.net ESMTP Postfix

Heute hatte ich ein System auf dem beides nicht existierte. Da habe ich eine Methode mit python gefunden die sehr gut funktioniert hat:

user@host ~ $ python
Python 2.7.9 (default, Mar  1 2015, 12:57:24) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> conn=socket.create_connection(('mail.example.net',25))
>>> input=conn.makefile()
>>> print input.readline()
220 mail.example.net ESMTP Postfix

>>> conn.sendall('QUIT')
>>> conn.close()
>>> 

SSH ProxyCommand

Mal wieder SSH … Wie nervig ist es immer wegen Firewalls und Serverhopping erst auf den einen Server gehen zu muessen, bevor man sich auf dem gewuenschten einloggen kann. Die Loesung lautet ProxyCommand. Ein Beispiel fuer eine .ssh/config:

Host *
Compression		yes
CompressionLevel	9
 
Host			bar
User			username
Port			22
ProxyCommand 		ssh foo nc %h %p
Ciphers 		arcfour
ClearAllForwardings	yes
 
Host			foo
HostName		192.168.1.1
User			username
Port			22

Wenn man nun noch eine Key-Authentifizierung hat, (und auf foo in der .ssh/config auch bar definiert ist) kann man sich Schwupps mit

ssh bar

auf dem gewuenschten Rechner einloggen ohne laestiges zwischendrin :-) Ciphers und ClearAllForwardings sind Performancesachen, denn die eine Verbindung muss nicht soo stark verschluesselt sein, wenn es der Tunnel bereits ist.