Ziel dieser Ausschnitte ist es, daß der Hamster automatisch den zum Mailversand nächstgelegenen Smarthost benutzt. Das ist in der Regel der des aktuellen ISP, denn der steht ziemlich direkt hinter der Telefonleitung. Jedenfalls noch im Netz des Providers, und deshalb sollte er besser und schneller arbeiten als jeder andere. Das betrifft auch die Mailserver von Freemailern.
Die Aufgabe gliedert sich im Wesentlichen in drei Teile: a) den aktuellen Provider ermitteln, dann b) den passenden Smarthost bestimmen, und am Ende c) die Mails in passender Form über diesen Server versenden.
Ich habe mir ein Modul erstellt, das die immer wieder gleichen Aufgaben Mailversand und -holen, sowie Newspost und -pull erledigt. Die verwendbaren Server sind aber vom aktuellen ISP abhängig.
Zunächst einmal definiert dieses Modul einige Variablen für die Namen der DFÜ-Verbindung. So brauchen diese nur an einer zentralen Stelle gepflegt werden.
#!initialize varset ( $Activity_PArcor, "Arcor-IP" ) {...} varset ( $Activity_PFreenet, "Freenet Special" ) varset ( $Activity_PNikoma, "Nikoma by Call" ) return( 0 )Etwas später folgt der Abschnitt, in dem die aktuelle Verbindung ermittelt wird. Das ist Aufgabe a) von oben.
$Connection = RasGetConnectionDiese Verbindung wird nun benutzt, um die zuständigen Server zu ermitteln. Hier wieder ein kleiner Ausschnitt, die Aufgabe b) wird damit gelöst.
If ($Connection == $Activity_PFreenet) $smtpauth = True $ProvSMTP = "mx.freenet.de" $ProvNews = "newspost.freenet.de,nntp" endif If ($Connection == $Activity_PNikoma) $smtpauth = False $ProvSMTP = "mail.nikoma.de" $ProvNews = "news.nikoma.de,nntp" endif {...} If ($ProvNews != "") $Newsservers = $Newsservers + ";" + $ProvNews endifNatürlich gibt es noch weitere Abfragen, weil es bei mir auch mehr mögliche DFÜ-Verbindungen gibt. Jetzt noch die elementare Benutzung der Informationen, um auch Aufgabe c) adäquat zu behandeln.
# News verschicken If ($ProvNews != "") HamNewsPost ( $ProvNews ) HamWaitIdle ( 1000 ) endif HamNewsPost ( $Newsservers ) # Mails senden If ($ProvSMTP == "") HamSendmailAuth ( "smtp.compuserve.de" ) Else If ($smtpauth) HamSendmailAuth ( $ProvSMTP ) Else hamsendmail ( $ProvSMTP ) Endif EndifDer Mail-Account bei Compuserve ist mein Account für Fallback. Er arbeitet mit SMTP-AUTH, ist auch über andere Zugänge verwendbar, kann also immer genutzt werden. Ansonsten wird der Smarthost des Providers verwendet, je nach Provider mit oder ohne Anmeldung. Das setzt voraus, daß die entsprechenden Server korrekt beim Hamster angemeldet sind. Die Variable $Newsservers wird natürlich auch so gesetzt, daß alle global verfügbaren Newsserver hier gelistet sind.