Posted: Sun Jun 07, 2009 9:32 Post subject: E-Mail von dd-wrt-Router
Hallo community,
folgendes Problem konnte ich bisher nicht lösen. Könnt Ihr helfen?
Infos:
1. Um welches Router Modell handelt es sich? WRT54gl V1.1
2: Welche Firmwareversion wird verwendet? mini
3: Wie wurde der Router Geflasht -> 30/30/30 sec. ok
4: Wie sind die lokalen Netzwerkgegebenheiten? Der Router ist einem LAN und realisiert dort ein WLAN-Unternetz. Das funktioniert auch alles sehr gut.
5. Wie ist der Router an das Internet angebunden? Über das LAN, das wiederum über einen Netgear-Router FWG-114 an DSL (Alice)angeschlossen ist. Das funkioniert auch alles.
6. Was soll realisiert werden / Was führ ein Problem besteht? Ich möchte automatisch E-Mails vom DD-WRT-Router zugeschickt bekommen. (Sie sollen die log-Dateien enthalten.) Dazu habe ich im jffs-Ordner ein Script platziert, das später durch ein cron-job gestartet werden soll. Leider funtkioniert es nicht vom DD-WRT-Router aus. Bei anderen Rechnern - sogar welchen, die im Subnetz des DD-WRT-Routers sind - funktioniert das Script. Es kann also nicht ganz falsch sein. In den iptables habe ich nichts gefunden, was Port 25 sperrt. Was könnte es noch sein?
Danke,
Victor
Es folgt das Script: (Nicht von mir geschrieben.)
#!/bin/sh
# simple script to connect to deliver mail to an SMTP server without
# having to rely on Postfix or Sendmail (long story). Initially
# I tried to use telnet but telnet can't handle automated interaction.
# Netcat however turns out to be one awesome 'swiss army knife'.
# My production version of this has a separate script dynamically
# determine variables based off certain database values & time of
# day conditions, exports them and calls this script to
# handle the emails, which delivers them in mere seconds instead of
# minutes or never (still, long story).
EMAIL_TO="*******@web.de"
EMAIL_SUBJECT="SYSLOGD Report"
EMAIL_DATA="line 1
line 2
line 3
test test."
# could use HELO instead -- guess it depends on the SMTP server. It
# should default back to HELO if EHLO isn't supported
(echo EHLO $USER@wrt54gl
sleep 1
echo MAIL FROM: syslogd@dd-wrt.com
sleep 1
echo RCPT TO: $EMAIL_TO
sleep 1
echo "DATA
From: syslogd@dd-wrt.com
To: $EMAIL_TO
Subject: $EMAIL_SUBJECT
Joined: 16 Jun 2006 Posts: 2427 Location: Berlin, Germany
Posted: Sun Jun 07, 2009 10:47 Post subject:
Sieht nach den Stad Rules von dd-wrt aus!
ACHTUNG nicht verwirren lassen das die default policy auf ACCEPT steht was den Anschein erwägt das dort Tür und Tor offensteht dem ist aber nicht so!
Da gibt es noch eine Verknüpfung zu Chain logdrop (8 references)
Der Grund (default policy auf ACCEPT ) dafür findet sich vermutlich in Verbindung mit den L7 Patches / Filtern!
Ob das gehen müsste kann ich dir nicht sagen es gibt hier nicht sehr oft Projekte dieser Art deswegen hab ich da auch keine Erfahrungswerte oder Anhaltspunkte die bei der Fehler Suche helfen könnten, es hilft also nur Probieren!
Teste das ganze doch mal zuhause bei dir wenn das möglich sein sollte!
mein Vermutung ist das ausgehender Verkehr der vom Router selbst erzeugt wir geblockt wird (ist ja auch vernünftig) deswegen die ACCPET Regel für Port 25 in der OUTPUT Kette
Hab die beiden FW Regeln gerade mal bei mir eingebaut und das Script per ssh laufen lassen
folgendes ist bei rausgekommen
Code:
220 smtp08.web.de ESMTP WEB.DE V4.110#277 Sun, 07 Jun 2009 12:59:15 +0200
501 syntactically invalid EHLO argument(s)
550 HELO or EHLO required
503 No sender yet given
503 MAIL FROM command must precede DATA
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
221 smtp08.web.de closing connection
Sieht für mich so aus das eine ausgehenden Verbindung vom Router selbst auf Port 25 erlaubt wird und auch sattfindet.
Es scheint allerdings ein Problem mit dem EHLO zugeben!
Da müsste man sich mal das Script in Ruhe anschauen und schauen wo es Klemmt!
Joined: 16 Jun 2006 Posts: 2427 Location: Berlin, Germany
Posted: Sun Jun 07, 2009 15:23 Post subject:
So hab nochmal ein bisschen mit dem script gespielt!
und es funktioniert einwandfrei auch ohne Firewall Regeln in der OUTPUT Kette!
Code:
!/bin/sh
# simple script to connect to deliver mail to an SMTP server without
# having to rely on Postfix or Sendmail (long story). Initially
# I tried to use telnet but telnet can't handle automated interaction.
# Netcat however turns out to be one awesome 'swiss army knife'.
# My production version of this has a separate script dynamically
# determine variables based off certain database values & time of
# day conditions, exports them and calls this script to
# handle the emails, which delivers them in mere seconds instead of
# minutes or never (still, long story).
EMAIL_TO="Empfängeradresse"
EMAIL_SUBJECT="SYSLOGD Report"
EMAIL_DATA="line 1
line 2
line 3
test test."
# could use HELO instead -- guess it depends on the SMTP server. It
# should default back to HELO if EHLO isn't supported
(echo helo web.de
sleep 6
echo MAIL FROM: router@dd-wrt.com
sleep 1
echo RCPT TO: $EMAIL_TO
sleep 1
echo "DATA"
sleep 1
echo "From: router@dd-wrt.com
To: $EMAIL_TO
Subject: $EMAIL_SUBJECT
Hallo pepe,
das ist ja toll. Es funktioniert also bei Dir. Ich werde es morgen ausprobieren und hoffe, dass es dann auch bei mir läuft. Das Problem bei meinen Tests war, dass ich nach dem Scriptstart gar keine Meldung, auch keine Fehlermeldung bekommen hatte, sodass die Analyse schwer war.
Ich bin gespannt auf morgen. Vielen Dank, dass Du Dich der Sache so intensiv angenommen hast.
Hallo pepe,
leider funktioniert es nicht bei mir. Folgendes habe ich getestet.
Ich habe Dein Script übernommen und im Verzeichnis jffs auf dem Router gespeichert, es ausfuehrbar gemacht und gestartet. Ich bekam keine Antwort: nach etlicher Zeit kam die Meldung über die Zeitüberschreitung.
Habe die iptable-Kommandos ausgeführt - keine Änderung beim anschließenden Abschicken des Scripts.
(Im übrigen habe ich keine Änderungen in den iptables festgestellt nach Ausführung der Befehle. Müsste dort nicht irgendetwas von Port 25 stehen?)
Nun habe ich unter Ubuntu in einer virtuellen Maschine das script installiert und dort gestestet:
bei web.de
victor@ubuntu-vm:~$ sh webmailscript2.sh
220 smtp06.web.de ESMTP WEB.DE V4.110#277 Mon, 08 Jun 2009 16:37:26 +0200
250 smtp06.web.de Hello *********.adsl.alicedsl.de [ip]
501 Keine Authentifizierung, oder POP3-Anmeldung zu weit in der Vergangenheit . / Authentification failed, or POP3 logon too old.
503 No sender yet given
503 MAIL FROM command must precede DATA
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
500 Unrecognized command
221 smtp06.web.de closing connection
victor@ubuntu-vm:~$
Also ähnliches Ergebnis wie bei Dir gestern.
Jetzt habe ich das gleiche mit einem anderen E-Mail-Provider gemacht.
bei e******u.org
victor@ubuntu-vm:~$ sh e*****umailscript.sh
220 e*****u.org ESMTP Postfix
250 e*****u.org
250 2.1.0 Ok
250 2.1.5 Ok
354 End data with <CR><LF>.<CR><LF>
250 2.0.0 Ok: queued as 48B8A24D813C
221 2.0.0 Bye
victor@ubuntu-vm:~$
Also positives Ergebnis. E-Mail kam an. Leider als Spam Aber das ist ein anderes Problem.
Das script funktioniert also, es kommt durch meinen Netgear-Router durch. Es sieht aber so aus, als ob dd-wrt keine Verbindung aufbauen kann.
Hast Du noch eine Idee? Was soll ich noch ändern? Als Du das Script getestet hast, da hast Du es aus dd-wrt gestartet? Welchen Ordner hast Du benutzt?
Deine vielen Tipps habe ich alle getestet. Danke dafür.
Ich bin inzwischen ziemlich sicher, dass das Script ok ist und dass ich es auch richtig benutzte. Egal ob ich es einfüge oder als Script starte, das Ergebnis ist dasselbe. Beim Hineinkopieren wird alles abgearbeitet und nach der letzten Zeile bleibt er wartend stehen bis die Zeitüberschreitung kommt.
Es reagiert wirklich anders als bei Dir.
Dafür noch ein Indiz: Gebe ich ping web.de ein, bekomme ich Antwort. Gebe ich telnet smtp.web.de 25 ein, bekomme ich keine Antwort mehr. Das ist bei meinem UBUNTU-Rechner nicht so. Und dort läuft auch das Script ...
Was könnte die Ursache sein?
Auch der hinter dem dd-wrt-Router liegende WLAN-Client zeigt dieses merkwürdige Verhalten nicht: Hier funktioniert sowohl die Ping-Anfrage als auch die Telnet-Anfrage bei web.de.
Beim dd-wrt-Router funktioniert nur die ping-Anfrage, die telnet-Anfrage nicht.
Ob Du mal prüfen könntest, wie sich Dein Router verhält?
Danke, Victor
PS: Die genaue Firmware-Version, die ich installiert habe ist: DD-WRT v24-sp1 (07/27/08) mini. Und jetzt sehe ich es auch: es ist die oben als buggy beschriebene Version. Ich werde also heute Nachmittag die empfohlene Version flashen und alles noch einmal probieren.
Es lag wohl nicht an der Firmware-Version. Nach dem Flashen auf die neue Version dd-wrt.v24-11296_NEWD_mini.bin hat sich das Verhalten nicht geändert: keine telnet-Verbindung möglich.