POP-before-SMTP Mini-HowTo

Stand: 23. Januar 2001
Diese Dokument erläutert die Konfiguration eines Mailsystems mit dynamischer Relay-Authorisation. Das Verwahren wird für das folgende Softwarepaket erläutert:

Prinzip

Bei der Konfiguration eines Mailservers, über den Nutzer mit dynamischen IP-Adressen Mails versenden wollen, steht man vor dem Problem, wie man diese (und nur diese) Nutzer authorisiert. Das ursprüngliche SMTP-Protokoll sieht keine individuelle Authentifizierung vor, deshalb greift man oft auf den POP-before-SMTP-Trick zurück. Hierbei Authentifiziert sich der Nutzer zuerst dadurch, daß er per POP3-Protokoll seine Mail abfragt. Dabei muß einen gültigen Nutzernamen und ein passendes Passwort verwenden. Ist diese Authentifizierung erfolgreich, so erhält er für eine begrenzte Dauer die Erlaubnis, von seiner IP-Adresse aus EMails über den Server zu versenden.

Funktionsweise

Um die Funktionsweise des Systems zu verstehen, soll das Zusammenspiel der einzelnen Komponenten näher betrachtet werden. An erster Stelle der Kette steht der POP-Deamon. In unserem Beispiel wird der QPopper von Qualcomm verwendet. Aber auch alle anderen im Sourcecode vorhandenen POP-Server lassen sich leicht erweitern. Ist die DRAC-Unterstützung aktiviert, so versucht der Daemon nach jeder erfolgreichen Authentifizierung einen RPC-Request an den DRAC-Daemon zu schicken, um ihm die authentifizierte IP mitzuteilen. Der DRAC-Daemon nimmt die übergebene IP-Adresseund trägt sie in eine Datenbank ein, die dann vom SMTP-Server verwendet werden kann, um autorisierte Clients zu bestimmen. Gleichzeitig sorgt er dafür, daß die IP nach Ablauf einer festgelegten Zeitdauer aus der Datenbank entfernt wird.

Konfiguration

DRACd

  1. (RPM-)Paket herunterladen
    Die Verwendung eines RPM-Pakets ist in diesem Fall empfehlenswert, da es Distributions-unabhängig ist.
  2. Installationspfad der Datenbank ermitteln
    • rpm -qlp dracd-<version>.rpm
      In der Ausgabe sollte die Datei dracd.allow erscheinen. Der Daemon legt die Datenbank dracd.db in das selbe Verzeichnis (meist /etc/mail).
  3. Paket installieren (rpm -i dracd-<version>.rpm).
  4. Starten:
    Zum Starten des Daemons sollte ein passender Link in das entsprechende rc.d-Verzeichnis eingetragen werden.

QPopper

  1. Sourcen herunterladen und entpacken.
    Die Verwendung fertiger (RPM-)Pakete ist nicht zu empfehlen, da meist keine DRAC-Unterstützung aktiviert ist.
  2. Übersetzen:
    • ./configure --enable-shy --enable-specialauth --enable-drac
    • make
  3. Installieren:
    • cp ./popper/popper /usr/sbin/popper
  4. Konfiguration:
    • inetd: Eintrag in die inetd.conf
         pop3    tcp     /usr/local/lib/popper    qpopper -s
      	
    • xinetd: Erzeugen einer qpop3-Datei im xinetd-Verzeichnis mit dem Inhalt
      service pop3
          {
              socket_type     = stream
              protocol        = tcp
              wait            = no
              user            = root
              server          = /usr/sbin/popper
              server_args     = qpopper -s
              port            = 110
          }                        
      	

Postfix

Zur Nutzung der durch den DRACd erzeugten Datenbank muß in der /etc/postfix/main.cf folgende Eintragung enthalten sein:

smtpd_recipient_restrictions = btree:/etc/mail/dracd,
                               check_relay_domains

Sollte der DRACd die Datenbank an anderer Stelle ablegen, so ist der Pfad entsprechend anzupassen. Zu beachten ist, daß der Name der Datenbank keine .db-Endung tragen darf, diese wird automatisch angehangen. In der Praxis werden an dieser Stelle noch weitere smtpd_recipient_restrictions vorhanden sein, diese sollte man unverändert lassen (wenn man nicht weiß, was man tut).