Seite 1 von 1

emails ohne smtplib

Verfasst: Freitag 26. Februar 2010, 16:52
von bankkind
Hallo zusammen,

ich will mails versenden, aber ohne smtplib. Geht das irgendwie?

Oder anders ausgedrueckt, ich habe kein SMTP Gateway was ich nutzen kann, da ich mich in einem gesichertem Netz befinde. Will aber Mails nur intern verschicken. Funktioniert das? Also quasi aehnlich wie die mail() funktion in php.

Danke
VG
bankkind

Verfasst: Freitag 26. Februar 2010, 17:30
von philistion
Du sagst "intern verschicken", also nehme ich an es gibt einen internen Mailserver. Das Email muss ja irgendwie dorthin gelangen. Standardmäßig läuft auf einem Mailserver für den Empfang ein SMTP-Listener.

Du benötigst keinen externen SMPT-Relay-Server oder -Gateway, du kannst dich doch einfach direkt auf euren internen SMTP-Daemon (Port 25) verbinden und die Mails dort raufschieben.
Ich denke dass die smtplib dafür wohl nicht schlecht geeignet wäre?

Verfasst: Freitag 26. Februar 2010, 20:31
von fabi1511
Warum willst du smtplib nicht benutzen. die standartbibliothek ist ja mit die größte stärke von Python...

Verfasst: Freitag 26. Februar 2010, 22:24
von bankkind
Ja schon, smtplib waere wie geschaffen fuer meine aufgabe, aber ich kenne ganz einfach nicht den mailserver, bzw, ich weiss nciht wie ch ihn anpsrechen kann...

ich weiss aber das einige unserer middleware und backend systeme auch mails verschicken koennen ueber das linux/unix programm nail(mail). weiss jemand zufaellig ob diese software vorkonfiguriert ist bzw. ob ich diese mit python nutzen kann??

VG
bankkind

Verfasst: Freitag 26. Februar 2010, 23:03
von philistion
Schau dir mal als allererstes an, ob auf dem Mailserver ein SMTP-Dienst läuft, denn im Grunde macht mailx (früher: nail) auch nichts anderes.

Das ist nicht so kompliziert, lies dir den SMTP-Standard oder einfach die Docs zur smtplib durch, dann hast du alles was du brauchst.
Ist auch viel eleganter als hier irgendein externes Tool aufzurufen.

Verfasst: Sonntag 28. Februar 2010, 21:49
von noisefloor
hallo,
ich weiss aber das einige unserer middleware und backend systeme auch mails verschicken koennen ueber das linux/unix programm nail(mail).
Dann läuft auch irgendwo ein Mailserver.

BTW, viele Linuxe - zumindest die Serverinstallationen - bringen einen installierten MTA (Mail Transfer Agent) mit, z.B. sendmail.

Der einfachste Weg ist, dass du die IP / Zugangsdaten von einem von diesen Servern bekommst. :-)

Gruß, noisefloor

Verfasst: Montag 1. März 2010, 10:19
von mkesper
bankkind hat geschrieben:Ja schon, smtplib waere wie geschaffen fuer meine aufgabe, aber ich kenne ganz einfach nicht den mailserver, bzw, ich weiss nciht wie ch ihn anpsrechen kann...
Dann wende dich vertrauensvoll an die Sysadmins. Ansonsten stehen die früher oder später bei dir auf der Matte, wenn du da versuchst, "wild" Emails zu verschicken...

Verfasst: Dienstag 2. März 2010, 10:18
von bankkind
OK, gemacht, getan.

via telnet kann ich local mit dem smtp arbeiten:


Code: Alles auswählen

telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 linux.local ESMTP Postfix

aber in python kann ich zum smtp nicht connecten via smtplib

>>> smtp = smtplib.SMTP("localhost")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib64/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())
socket.gaierror: (-2, 'Name or service not known')


hat jemand ne erklaerung?

Verfasst: Dienstag 2. März 2010, 10:32
von philistion
Schön, ein postfix-Server!

Hm, wie lautet denn der Hostname von deinem Pc?

Also was gibt folgendes Skript aus?

Code: Alles auswählen

import socket
print(socket.gethostname())
Führt das zu einer Exception, solltest du deinen Hostnamen korrekt setzen!

Es könnte daran liegen: http://wiki.list.org/pages/viewpage.act ... Id=4030722

Verfasst: Dienstag 2. März 2010, 17:13
von bankkind
ich habs nun per workaround so geloest:

s = smtplib.SMTP(local_hostname='localhost',port=25)