sendmail-Frage - python<>shell

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von vegaS, 10.11.2006.

  1. vegaS

    vegaS Jungspund

    Dabei seit:
    02.10.2006
    Beiträge:
    20
    Zustimmungen:
    0
    Hallo,
    da bin ich wohl Anfänger :(

    Wieso funktioniert bei mir folgendes Python-Skript einwandfrei:
    Code:
    #!/usr/bin/python
    
    def mail(mail_from,mail_to,mail_subject,mail_text):
    	import smtplib,string
    	mail_text="To: "+mail_to+"\nSubject: "+mail_subject+"\n\n"+mail_text
    	server = smtplib.SMTP('localhost')
    	server.sendmail(mail_from,mail_to,mail_text)
    	server.quit()
    
    mail_from = "test@test.de"
    mail_to = "test@test.de"
    mail_subject = "test"
    mail_text = "Hallo, nur ein Test.\n"
    
    mail(mail_from,mail_to,mail_subject,mail_text)
    aber dieses shell-Skript funktioniert nicht:

    Code:
    #!/bin/sh
    
    mail_from="test@test.de"
    mail_to="test@test.de"
    mail_subject="test"
    mail_text="Hallo, nur ein Test.\n"
    
    (echo "To: $mail_to"
     echo "From: $mail_from"
     echo "Subject: $mail_subject"
     echo ""
     echo ""
     echo "$mail_text"
     echo ""
     echo "") | /usr/sbin/sendmail -oi -t
    
    exit 0
    auch auf der Kommandozeile geht nix. ?(

    Code:
    root@box:/usr/sbin$ sendmail -t
    From: test@test.de
    To: test@test.de
    Subject: test
    
    Hallo, nur ein Test.
    .
    Wie kann ich auf der shell nach der gleichen Methode senden, wie es python tut.

    danke
    vegaS
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Mit 'mail'.
     
  4. vegaS

    vegaS Jungspund

    Dabei seit:
    02.10.2006
    Beiträge:
    20
    Zustimmungen:
    0
    tatsache! danke! :D

    Aber wieso klappt es mit mail?
    Geht es beim Senden direkt an den Ziel-Server und
    erwartet lokal keinen eingerichteten Account?

    vegaS
     
  5. Jabo

    Jabo Aufgabe ohne Minister

    Dabei seit:
    12.10.2006
    Beiträge:
    1.322
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hallo,

    ich verstehe die Frage nicht wirklich....

    Es ist ein Mailprogramm (wie Evolution oder KMail - nur halt für die Kommandozeile), das an den lokalen MTA die Nachricht übergibt. Dabei hast du ja ne Konsole auf bzw. das Script läuft als ein bestimmter User. Soviel zur Sender-Seite.

    Von der Empfänger-Seite weiß "mail" natürlich nicht, ob die Adresse korrekt ist und existiert. Dort schlägt sie einfach auf und der dortige MDA versucht sie zuzustellen. Das kann natürlich auch ein "virtual user" sein oder ein Alias, der auf einen richtigen User zeigt oder was auch immer.
     
  6. vegaS

    vegaS Jungspund

    Dabei seit:
    02.10.2006
    Beiträge:
    20
    Zustimmungen:
    0
    Hallo Jabo,

    ich habe auf meinem Server keinen mail-Account (pop, smtp) eingerichtet, so wie ich es zum Beispiel bei Evolution, KMail, Thunderbird mache. Trotzdem kann ich mit /usr/bin/mail mails senden. (Mit /usr/sbin/sendmail geht es nicht !?!?)

    Normalerweise sende ich eine Mail per SMTP an meinen "Mail-Server", einen Rechner von gmx, web oder dem meiner eigene Domain. Dazu muss ich extra "pop before smtp" machen, um auch ja der zu sein, der ich bin.

    Jetzt habe ich mir vorgestellt, es muss zwei Möglichkeiten geben, eine mail zu senden:
    1, so wie es zum Beispiel gmx erwartet (smtp mit Passwort beim pop)
    2, so wie die mail von gmx direkt an den Zielserver geleitet wird (natürlich ohne Passwort)

    Anders gefragt: Wenn ich mit mail eine 'mail' sende, geht diese dann direkt an den Mailserver der Ziel-Domain (smtp-connect)? Also verbindet sich mein Rechner beim senden je nach Ziel-Adresse mit verschiedenen Servern und nicht immer mit dem gleichen ... smtp.test.de

    Argh, X(
    ich kann mich nicht richtig ausdrücken...

    vegaS
     
  7. Jabo

    Jabo Aufgabe ohne Minister

    Dabei seit:
    12.10.2006
    Beiträge:
    1.322
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hm, das ist aber ein kleiner Unterschied...

    Wenn du so einen grafischen Mail-Client benutzt, um via GMX Post zu versenden, mußt du natürlich die GMX-Daten eintragen, sonst nimmt GMX die nicht an.

    Aber *innerhalb* deines Systems geht SMTP auch, und du bist ja als User angemeldet! Du kannst ja auch beispielsweise Systemnachrichten in eine lokale Mailbox leiten, z.B. die Meldungen von "cron" an den User "root". Lokal *ist* dein User-Account eine Mailadresse! Prinzipiell kannst du auch an "dich@gmx.de" von der Kommandozeile mailen - der Absender ist dann "du@dein_Rechner", was wegen der Spamproblematik aber von den meisten großen Mailprovidern geblockt wird (das ist jetzt aber ein weiteres Thema...)

    Das erklärt aber, wieso mail im Prinzip geht (bei lokalen Usern wie "root" oder deinem eigenen Login kann "@Rechner<.tld>" wegfallen: mail -s Test root plus irgend welcher Text sollte klappen, root kriegt die direkt ins Postfach).
     
  8. vegaS

    vegaS Jungspund

    Dabei seit:
    02.10.2006
    Beiträge:
    20
    Zustimmungen:
    0
    Dass es lokal funktioniert, verstehe ich ja.

    Aber ich sende ja ohne Account an eine externe eMail-Adresse.
    Wozu braucht man also Accounts? Wieso klappt das mit dem Programm 'mail' und nicht mit 'sendmail'?

    Schau ich mir die Route im Header der mail an, so sehe ich, dass mein Linux-Rechner direkt an den mx0 meiner mail-domain gesendet hat. Das beantwortet meine Frage....

    Bei gmx als Ziel-Domain klappt es auch, aber die mail rutscht in den Ordner "SpamVerdacht". Klar, denen ist die Route der mail zu kurz - offensichtlich gab es ja keinen Provider des Absenders...

    ich hoffe ich habe es jetzt verstanden :-)
    vegaS

    P.S: wir sind o.T., sorry
     
  9. #8 Jabo, 12.11.2006
    Zuletzt bearbeitet: 12.11.2006
    Jabo

    Jabo Aufgabe ohne Minister

    Dabei seit:
    12.10.2006
    Beiträge:
    1.322
    Zustimmungen:
    0
    Ort:
    Hamburg
    Hallo,

    ich habe übrigens gerade mal dein Shellscript genommen und mir damit eine Mail von "root" an "jens" geschickt (nur diese Variablen auch angepaßt, dann chmod +x und ausgeführt). Die kam sofort an....

    Na ja, du mailst ja von einem gültigen Account (auf deinem Rechner) *an* ein gültiges Account... nur halt nicht mit deiner GMX-Adresse als Absender, sondern mit deiner lokalen... Um mit deiner GMX-Adresse als Absender zu mailen, brauchst du ein Account von denen - und *deren* SMTP-Server, nicht deinen! Wenn du dein GMX-Login übergibst, aber SMTP geht von *deinem* Rechner aus, lehnt GMX die Annahme der Mail ab, egal wohin sie dann soll.
    Eben, du hast einen MTA am Start, der genau das kann, Mail zustellen.

    Na, erstens mal hast du keinen DNS-Eintrag als "MX" - und selbst wenn, über DynDNS zum Beispiel, dann vermutlich eine dynamisch zugewiesene IP - und GMX taggt die als Spam, weil die beispielsweise von SORBS gelistet wird. Dort tragen Provider wie etwa Hansenet ihre dynamisch zu vergebenden IP-Blöcke ein und wenn von so einer IP eine Mail kommt, dann war's schon mal kein regulärer "MX", sondern was Gebasteltes.
     
  10. #9 Wolfgang, 12.11.2006
    Zuletzt bearbeitet: 12.11.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Wenn du versuchst mit einer dynamischen IP Mails an einem Mailserver einzutüten, musst du schon Glück haben wenn sie überhaupt angenommen wird.
    Um genau das möglich zu machen, gibt es die verschiedenen Authentifizierungsmöglichkeiten der Mailserver.

    Im Grunde kannst du das ganze Spielchen auch mal mit telnet direkt durchführen, dann siehst du wie die Gegenstelle antwortet.
    Hier mal ein kleiner Dialog, eines richtig eingerichteten Mailservers, der keine mails von dynamischen IP annimmt:
    Servername und IP gefälscht.

    Mail macht nicht anderes, als diesen Dialog durchzuspielen.

    Gruß Wolfgang
     
Thema:

sendmail-Frage - python<>shell