Hamster nutzt Smarthost automatisch

Ein Script, das selbst diese Entscheidungen treffen kann, und einfach zu pflegen ist

Stand: 16.07.2001

 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  = RasGetConnection
Diese 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
  endif
Natü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
  Endif
Der 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.

Der obligatorische Zähler: