Probleme beim Versenden von E-Mails über das Posix-Skript

342
The-0m3n

Ich habe einen SMTP-Server zum Senden von E-Mails über Red Hat 7.2 Wenn ich die Befehle auf dem Server eingebe, wird die Mail erfolgreich gesendet. Ich habe jedoch versucht, ein Skript zum automatischen Versenden von E-Mails zu erstellen, das jedoch fehlschlägt. Mein Skript:

#!/bin/bash  ( echo "HELO server.com";  echo "MAIL FROM: account@server.com";  echo "RCPT TO: rcptoacc@server.com";  echo "DATA";  echo "From: account@server.com";  echo "To: rcptoacc@server.com";  echo "Subject: Test mail";  echo -e "\n";  echo "Ok.";  echo "Bye";  echo -e "\n\n.";  echo "QUIT";  ) | /usr/bin/telnet smtp_server 25 

Was mache ich falsch?

1
Auf dem Server sehen Sie Hinweise auf die Verbindung und / oder Fehler über den Server? Möglicherweise wird dies alles zu schnell gesendet, und die Telnet-Verbindung wird hergestellt, bevor der Server das Banner zurücksendet. SMTP ist schließlich ein Dialog mit dem Server, kein Monolog Eric Renouf vor 7 Jahren 0
Bash ist auch kein POSIX, echo -e ist also kein POSIX-Skript Eric Renouf vor 7 Jahren 1
Siehe [diese Antwort] (http://stackoverflow.com/a/10001357/4687135) für eine Möglichkeit, dies in reinen Bash zu tun (definitiv nicht POSIX). Eric Renouf vor 7 Jahren 0
Danke Eric. Der Server wirft: xxxx wird ausprobiert. Verbunden mit xxxx Escape-Zeichen ist '^]'. Verbindung von fremdem Host geschlossen. Ich lege in jede Zeile einen Schlaf, aber das Ergebnis ist das gleiche. Dieses Skript funktioniert auf HP-UX The-0m3n vor 7 Jahren 0
Hast du auch einen vor der ersten Zeile und ist der Schlaf lange genug? Das ist ein fragiler Weg, aber als ich gerade das Skript gegen einen Mailserver ausprobiert habe, habe ich mich darüber beschwert, dass sich der Client nach CONNECT getrennt hat, sodass er die Konversation nie gesehen hat Eric Renouf vor 7 Jahren 0
Mit dem führenden "sleep" und einem "sleep" nach jeder Zeile, die Teil der Konversation ist, funktionierte es für mich, obwohl ich immer noch der Meinung bin, dass es besser wäre, ein Werkzeug zu verwenden, um smtp zu sprechen oder es in der verknüpften Antwort so zu machen Eric Renouf vor 7 Jahren 0
Ok, ich werde versuchen, es als verknüpfte Antwort zu tun. Im Übrigen funktionierte das Skript nach der QUIT-Zeile mit einem Sleep: `echo" QUIT "; schlaf 1; ) | / usr / bin / telnet` `Danke für den Rat. DASM The-0m3n vor 7 Jahren 0

0 Antworten auf die Frage