Hey,
ich wollte mir nen Emailserver basteln. Das habe ich damals schon recht gut mit BASCOM hinbekommen.
Leider bin ich kein Arduinoprofi und muss mich noch etwas in die Programmierung durchfummeln.
Ich habe das Beispiel ChatServer mal auf mein Arduino gespielt. Soweit funktioniert auch alles.
Nun wollte ich nur mal den Port auf 25 ändern und ich bekomme mit Putty keine Verbindung mehr.
Ändere ich den Port auf 23 oder 1234 etc. kann ich mir Putty verbinden.
An meiner Firewall kann auch nicht liegen. Denn ich kann mit Putty auf meinen Stratoserver
connecten. Ich habe auch mein Router abgeklemmt und mein Arduino direct an den PC gesteckt.
Das gleiche Problem
Weiss jemand wo ran das liegen kann ?
Vielen Dank
"Hab gerade mit nem Portscanner den Port 25 überprüft. Der soll offen sein.... Aber ich komm nicht rauf :("
Poste den Code, den Du verwendest (Code-Tags nicht vergessen)!
Ich gehe mal davon aus, da Du keine Angaben zur verwendeten Hardware machst, dass Du einen Arduino UNO mit dem originalen Arduino Ethernet Shield verwendest. Stimmt das?
Ich habe ein Arduino Mega mit dem Ethernetshild. Und der Code ist ein Beispiel von Arduino (Datei/Beispiele/Ethernet/ChatServer).
So funktiniert es auch ( EthernetServer server(23); )
Es funktioniert auch mit einem anderen Port.
Nur wenn ich den Port auf 25 stelle komme ich nicht mehr mit Putty rauf (EthernetServer server(25); ).
Ich möchte mir gerne ein Emailserver machen... Dafür brauche ich den Port 25 um ankommende Email entgegen zu nehmen.
Aber ich bekomme nur keine Verbindung
Wenn der Port reserviert ist, müsste ich den doch auch frei machen können
Und der Code ist ein Beispiel von Arduino (Datei/Beispiele/Ethernet/ChatServer).
Das war mir schon klar, aber ich möchte genau den Code sehen, der bei Dir nicht funktioniert, denn der Beispielcode funktioniert ja, nach Deinen Aussagen.
Ich möchte mir gerne ein Emailserver machen
Du bist Dir schon im Klaren, dass Du von einem embedded 8-bit-System mit 8kB RAM sprichst? Einen brauchbaren SMTP-Server wirst Du damit nicht hinkriegen, selbst wenn Du intensiv von der SD-Karte Gebrauch machst. Und ein Email-Server kann normalerweise ausser SMTP noch mindestens POP/IMAP.
Wenn der Port reserviert ist, müsste ich den doch auch frei machen können
Der Port ist nicht im Arduino reserviert, sondern im Internet. Genaugenommen ist er nicht mal reserviert, sondern einfach der Standardport, auf welchem normalerweise ein SMTP-Server lauscht.
Wenn Du nicht durchkommst, hat das entweder mit Deinem Code zu tun oder Deine Firewall im Router bzw. PC-OS sperrt diesen Port. Da er häufig für SPAM von Trojanern missbraucht wird, sperren viele sog. Internet Security Tools unter Windows diesen Port grundsätzlich (mit Ausnahme speziell zugelassener Software).
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network.
// gateway and subnet are optional:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,2, 10);
IPAddress gateway(192,168,2, 1);
IPAddress subnet(255, 255, 0, 0);
// telnet defaults to port 23
EthernetServer server(25);
boolean alreadyConnected = false; // whether or not the client was connected previously
void setup() {
// initialize the ethernet device
Ethernet.begin(mac, ip, gateway, subnet);
// start listening for clients
server.begin();
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("Chat server address:");
Serial.println(Ethernet.localIP());
}
void loop() {
// wait for a new client:
EthernetClient client = server.available();
// when the client sends the first byte, say hello:
if (client) {
if (!alreadyConnected) {
// clead out the input buffer:
client.flush();
Serial.println("We have a new client");
client.println("Hello, client!");
alreadyConnected = true;
}
if (client.available() > 0) {
// read the bytes incoming from the client:
char thisChar = client.read();
// echo the bytes back to the client:
server.write(thisChar);
// echo the bytes to the server as well:
Serial.write(thisChar);
}
}
}
Das einzige was ich geändert habe ist von "EthernetServer server(23);" auf "EthernetServer server(25);".
Das mit der Firewall hört sich gut an. Aber dann müsste ich doch eigendlich auch nicht auf meinen Stratoserver kommen.
Nen E-Mail Server habe ich schonmal mit BASCOM gemacht. Das geht wunderbar...
Und die SD-Karte hat auch immer ausgereicht. Der Server ist nur für meine Domain, also maximal 2-5 E-Mail Adressen.
Ich hatte nicht vor nen riesen Mailserver aufzubauen.
Ich habe die Domain jetzt nur noch für meine E-Mail und benutze dafür nen Relay Server. Aber naja....
Nen E-Mail Server habe ich schonmal mit BASCOM gemacht. Das geht wunderbar...
Auf welcher Plattform? Auch ein Arduino?
Der Server ist nur für meine Domain, also maximal 2-5 E-Mail Adressen.
Ich hatte nicht vor nen riesen Mailserver aufzubauen.
Einen riesen Mailserver hatte ich auch nicht angedacht. Aber wie sollen die Mails geholt werden? Soll auch ein POP-Server mitlaufen?
Wäre nicht ein Mailserver auf einem Router mit OpenWRT (o.ä., Raspberry Pi und Co geht natürlich auch) schneller, eleganter und vor allem standard-konformer? Ich weiss, selber programmiert ist viel interessanter, aber dafür gibt's genug andere Betätigungsfelder.
Das mit der Firewall hört sich gut an. Aber dann müsste ich doch eigendlich auch nicht auf meinen Stratoserver kommen.
Ich kenne die Regeln Deiner Firewall nicht, aber es könnte durchaus sein, dass nur das lokale Netz gesperrt ist. Ich würde mal kurz alle Firewalls deaktivieren, die zwischen dem PC und dem Arduino liegen könnten. Zudem würde ich mit dem Kommandozeilen-Programm telnet versuchen (muss bei Win 7 evtl. nachinstalliert werden), einfach um Filter von Putty vorzubeugen. Im Zweifelsfall ein Sniffing-Tool wie WireShark verwenden, um den Netzverkehr mitzuschneiden, dann siehst Du, was rausgeht und was nicht.