Ausgangsproblem:
Grundsätzlich sendet der Mini-Server regelmäßig seine dynamische IP mit
ddclient an den Dienst DynDns. Dadurch ist er über eine URL erreichbar. Bedingt durch eine Störung bei DynDns hat dies aber nicht funktioniert und somit war der Server von außen nicht erreichbar. Wie kommt man jetzt an die IP?
Lösung:
Per Email, den im Header der EMail ist die IP des Absenders enthalten. Außerdem kann man dann natürlich auch gleich eine EMail verschicken, die die derzeitige IP als Text enthält.
Ansatz:
Natürlich soll der Server nun nicht unnötigerweise ständig die IP-Mail durch die Gegend schicken. Am besten wäre es, wenn er dies nur auf Anforderung macht. Diese Anforderung muss der Server automatisch empfangen und verarbeiten. Eine Möglichkeit wäre also eine EMail. Die kann der Server selbstständig abrufen und auswerten. Aus Sicherheitsgründen soll er dies nur tun, wenn
1. er eine Email von einer festgelegten EMail-Adresse erhält (also zum Beispiel dem Administrator)
2. die Email ein bestimmtes Code-Wort im Betreff enthält
Umsetzung - der Empfang:
Zuerst muss der Server also autark ein Email-Konto abfragen und die enthaltenen Emails bearbeiten. Unter Linux gibt es dafür z.B. die Programme
getmail und
procmail
Mit getmail wird das Email-Konto abgefragt und die Nachrichten anschließend zur Weiterverarbeitung an procmail übergeben.
Zuerst also die Pakete installieren
apt-get install getmail4 procmail
Anschließend wird ein neuer User sysmail eingerichtet, der sich um die ganze Geschichte kümmert.
adduser sysmail
Der User sysmail soll dabei keinen Zugang zum FTP-Server haben und wird deshalb in die Datei /etc/ftpusers eingetragen. Zusätzlich wird er nach der gesamten Einrichtung für die Bash gesperrt /etc/passwd
Die Konfigurationen für getmail und procmail erfolgen im Home-Verzeichnis von sysmail.
cat .getmail/getmailrc
[options]
delete = false
message_log = /var/log/getmail/getmail.log
read_all = false
[retriever]
type = SimpleIMAPSSLRetriever
server = imap.googlemail.com
port = 993
username = sysmail@server.de
password = ******
#mailboxes = ("INBOX","[Gmail]/Alle Nachrichten")
mailboxes = ("INBOX",)
[destination]
type = MDA_external
path = /usr/bin/procmail
Dabei bedeutet die Optionen, dass
-die Nachrichten nach dem Herunterladen
nicht gelöscht werde
-die Log-Datei im entsprechenden Verzeichnis angelegt wird (sysmail braucht dort Schreibrechte!)
-nur neue Dateien heruntergeladen werden
Dann kommen die Angaben zum EMail-Konto. In diesem Fall für der sicheren (SSL-)Zugang über IMAP zum Server von Googlemail. Alternative wäre auch POP3 und ein unsicherer Zugang möglich.
mailboxes gibt an, welche IMAP-Ordner abgefragt werden sollen.
Am Ende noch die Konfiguration für die Weiterverarbeitung, hier werden alle Nachrichten an procmail übergeben. Alternative könnte man die Nachrichten z.B. auch lokal ablegen.
Das Verzeichnis .getmail und die Datei getmailrc sollten nur für den User sysmail lesbar sein:
chmod 700 .getmail; chmod 600 .getmail/getmailrc
Aufgerufen wird getmail als User sysmail mit
getmail, da procmail aber noch nicht eingerichtet ist lass wir das.