Qmail Anleitung

Aus

Wechseln zu: Navigation, Suche

Debian qmail Anleitung v1.2

by Frank Niedermann / letzte Aktualisierung 19.10.2003 Languages: German

Status: Die zentralen Inhalte sind vollständig und funktionieren mit der aktuellen Debian Woody Version (März 2003). Anregungen / Übersetzungen / Fehlermeldungen willkommen :-)

Status: Central contents are complete and working with the current Debian Woody Version (March 2003). Suggestions / translations / error messages are welcome :-)

Information: Dieses Dokument soll dabei helfen, den qmail-Mailserver (mit qmail-smtp und qmail-pop3) auf einem Debian GNU/Linux System über die Debian Paketverwaltung zu installieren und konfigurieren. Zusätzlich werden Programme wie vpopmail, ezmlm, QmailAdmin, vQadmin, procmail und Spamassassin installiert und konfiguriert. Eine ausführliche Dokumentation zu qmail bietet Life with qmail (en). Der Autor von qmail sowie die Benutzer der qmail-Mailingliste empfehlen qmail nach der Life with qmail Anleitung zu installieren da es andernfalls nur begrenzt Unterstützung über die Mailingliste gibt. Trotzdem sprechen einige Punkte für die Installation von qmail 'The Debian Way': - FHS-kompatibel: Die Definitionen und Richtlinien des Linux Filesystem Hierarchy Standard werden eingehalten. - Update-sicher: Programm- oder Betriebssystemupdates (z.B. apt-get upgrade) überschreiben nicht die qmail-Konfiguration. - Backup-freundlich: Ein Backup von /etc sichert alle Konfigurationsdateien. - System-einheitlich: Programm-Binarys sind in den entsprechenden Verzeichnissen (z.B. /sbin) und somit im $PATH und nicht im Verzeichnis /var. - DJB-kompatibel: Das /var/qmail - Verzeichnis enthält Symlinks zu den entsprechenden Verzeichnissen und Dateien.

Die Inhalte auf dieser Seite sind von verschiedenen Internetseiten, Dokumentationen und dem Wissen verschiedener Personen :-) zusammengestellt. Das Dokument steht unter der GNU Free Documentation License. Vielen Dank an Matthias Wimmer für die technische Hilfe bei meinen Fragen und Stephan "Lotussteve" Dietl für das Hosting der Seite auf www.cargal.org.

Verweise im Internet:

   * qmail Webseite (en)
   * Life with qmail (en)
   * inter7 Webseite (en)

Inhalt:

1. Übersicht zu qmail, Patches und Programmen 2. Übersicht zur qmail Installation auf Debian 3. Vorbereitung und Installation der benötigten Debian-Pakete 4. Installation von qmail 5. Installation der qmail-Systemtools 6. Installation und Konfiguration von vpopmail 7. Administration von vpopmail 8. Konfiguration von qmail 9. Zusatzprogramme 10. Testen von qmail und den Zusatzprogramme 11. Fehlersuche und Hilfe 12. Mail-Filter mit procmail 13. Spam-Filter mit Spamassassin 14. Virenscanner mit OdeiaVir 15. Abschlussbemerkungen und Changelog

go to top of page1. Übersicht zu qmail, Patches und Programmen

  • qmail

qmail ist ein sicherer, schneller und zuverlässiger Mail Transfer Agent (MTA). qmail kann als Ersatz für z.B. sendmail / exim / postfix / etc. eingesetzt werden.

Webseite: http://cr.yp.to/qmail.html

  • qmail - Patches

Es gibt viele verschiedene Patches für verschiedene Funktionen. Dieses Manual beschreibt wie man qmail für die Funktionen Tarpit, SMTP-AUTH und TLS patchen kann. Im Debian Paket qmail-src sind bereits die Patches QMAIL-QUEUE und Big-DNS enthalten. Achtung: Beim einspielen von mehreren Patches kann es sein das diese sich gegenseitig behindern.

- Tarpit-Patch: Tarpit ist ein SPAM-Schutz, erschwert Spammer das Benutzen des SMTP-Servers für Massen-Mails indem nach dem Senden von Mails kleine Warteschleifen eingelegt werden. - SMTP-AUTH-Patch: SMTP-AUTH ermöglicht die Authentifizierung am SMTP-Server. Alternativ oder zusätzlich kann POP-after-SMTP eingesetzt werden. - QMAIL-QUEUE-Patch: Veranlasst das jedes Programm das qmail-queue aufrufen will das Programm das in der Umgebungsvariable $QMAILQUEUE definiert ist aufruft. Kann z.B. für Filter oder Veränderungen an Mails eingesetzt werden. Ist bereits im Debian Paket qmail-src integriert. - Badmailto-Patch (bereits in qmail-src.deb integriert) - Big-DNS-Patch: Behebt Probleme die auftreten können wenn der DNS-Server (z.B. BIND) Pakete an qmail schickt die grösser als 512KB sind. Ist bereits im Debian Paket qmail-src integriert. - TLS-Patch: Erweitert qmail um sicherheitsrelevante Optionen (Verschlüsselung, Datenintegrität und beidseitige Authentifizierung).

  • Zusätzliche Programme

Es gibt Programme die einem qmail-System weitere Funktionen hinzufügen. Die Auswahl der Programme ist dem Systemverwalter überlassen, z.B. bieten die Programme vpopmail und vmailmgr im wesentlichen die gleichen Funktionen. Diese Anleitung beschreibt die Installation und Konfiguration einiger nützlicher Programme.

- ezmlm: Ein einfacher, leicht zu bedienender und schneller Mailinglist-Manager für qmail. - vpopmail: Ermöglicht virtuelle Domains und Benutzer für qmail. - QmailAdmin: Web-Interface zur Verwaltung eines qmail-Systems mit virtuellen Benutzern. - vqadmin: Web-Interface zur Verwaltung von Domains, Quotas, Passwörtern, Account-Optionen uvm. - Squirrelmail: Web-Interface das über Webseiten den Zugriff auf IMAP und POP3 Mailboxen ermöglicht (=Webmail). - IMP: Web-Interface das über Webseiten den Zugriff auf IMAP und POP3 Mailboxen ermöglicht (=Webmail). - Courier-IMAP: Ein Server-Dienst der Zugriff auf IMAP-Mailboxen ermöglicht.

go to top of page2. Übersicht zur qmail Installation auf Debian

  • Vorbereitung

Installation der benötigten Debian-Pakete (dnsutils, procmail, ucspi, daemontools, qmail-src ...).

  • Installation von qmail

Installation von qmail-src aus Debian/stable mit Tarpit-Patch, SMTP-AUTH-Patch und TLS-Patch.

  • Installation der qmail-Systemtools

Installation der Pakete qmail-sv, qmail-pop3-sv und qmail-smtp-sv aus Debian/unstable, Erstellung eines init-Scripts, Anpassen der service-Scripts.

  • Installation und Konfiguration von vpopmail

Installation von vpopmail aus den Sourcen, Konfiguration und Integration in die qmail-Umgebung.

  • Konfiguration von qmail

Einstellungen für die qmail-Serverdienste.

  • Zusatzprogramme

Installation und Konfiguration der Zusatzprogramme (Autoresponder, ezmlm, QmailAdmin, vQadmin).

  • qmail und Zusatzprogramme testen

Die Server-Dienste und Zusatzprogramme testen.

  • Installation und Konfiguration der Filter und Virenscanner

Installation von procmail und Spamassassin, Konfiguration und Integration auf ein Benutzerkonto.

go to top of page3. Vorbereitung und Installation der benötigten Debian-Pakete

  • dnsutils

Die Programme host und nslookup sollten installiert sein damit qmail den Hostnamen automatisch ermitteln kann.

apt-get install dnsutils dpkg -la | grep dnsutils

 ii  dnsutils       9.2.1-2        Clients provided with BIND
  • procmail

Procmail ist ein Mail-Verarbeitungs-Werkzeug das z.B. für Mail-Filter benutzt werden kann.

apt-get install procmail dpkg -la | grep procmail

 ii  procmail       3.22-4         Versatile e-mail processor.
  • daemontools

Daemontools ist eine Sammlung von Tools zur Verwaltung von UNIX Services.

apt-get install daemontools-installer build-daemontools

 Enter a directory where you would like to do this [/tmp/daemontools] 
 Do you want to remove all files in /tmp/daemontools, except daemontools_0.70-25_i386.deb now? [Yn] 
 Do you want to install daemontools_0.70-25_i386.deb now? [Yn] 
 Create symlink? [y/n] y
 Do you want to purge daemontools-installer now? [yN] 

dpkg -la | grep daemontools

 ii  daemontools    0.70-25        A collection of tools for managing UNIX services
 ii  daemontools-in 0.70-25        Installer package for building daemontools binary package
  • ucspi-tcp

Das Paket ucspi-tcp enthält die Programme tcpclient und tcpserver die eine Alternative zum Erstellen von TCP Client-Server-Applikationen sind (Alternative zu inetd).

apt-get install ucspi-tcp-src build-ucspi-tcp

 Enter a directory where you would like to do this [/tmp/ucspi-tcp] 
 Do you want to remove all files in /tmp/ucspi-tcp, except ucspi-tcp_0.88-5_i386.deb now? [Yn]
 Do you want to install ucspi-tcp_0.88-5_i386.deb now? [Yn] 
 Do you want to purge ucspi-tcp-src now? [yN] 

dpkg -la | grep ucspi-tcp

 ii  ucspi-tcp      0.88-5         tools for building TCP client-server applications
 ii  ucspi-tcp-src  0.88-5         Source only package for building ucspi-tcp binary package
  • SSL-Pakete

Die Pakete openssl, libssl0.9.6 und libssl-dev enthalten die benötigten Programme und Dateien für die TLS-Unterstützung.

apt-get install openssl libssl0.9.6 libssl-dev dpkg -la | grep ssl

 ii  libssl-dev     0.9.6c-2.woody SSL development libraries, header files and 
 ii  libssl0.9.6    0.9.6c-2.woody SSL shared libraries
 ii  openssl        0.9.6c-2.woody Secure Socket Layer (SSL) binary and related

go to top of page4. Installation von qmail

  • Source-Paket installieren

Das Debian Paket qmail-src enthält die Sources von qmail-1.03 und ein Script das automatisch die benötigten Einstellungen (z.B. qmail-Benutzer und -Gruppen) vornimmt und ein installierbares Paket erstellt. Es wird zuerst das Paket qmail-src per apt-get installiert und anschliessend build-qmail aufgerufen. Achtung: Das build-qmail - Script muss vor dem Kompilieren der Sourcen für das Einspielen der Patches unterbrochen werden!

apt-get install qmail-src

 -f No qmail accounts present, creating them now
 Adding group qmail (64010)...
 Done.
 Adding system user alias...
 Adding new user alias (64010) with group nogroup.
 Not creating home directory.
 Adding system user qmaild...
 Adding new user qmaild (64011) with group nogroup.
 Not creating home directory.
 Adding system user qmails...
 Adding new user qmails (64012) with group qmail.
 Not creating home directory.
 Adding system user qmailr...
 Adding new user qmailr (64013) with group qmail.
 Not creating home directory.
 Adding system user qmailq...
 Adding new user qmailq (64014) with group qmail.
 Not creating home directory.
 Adding system user qmaill...
 Adding new user qmaill (64015) with group nogroup.
 Not creating home directory.
 Adding system user qmailp...
 Adding new user qmailp (64016) with group nogroup.
 Not creating home directory.
 Not creating home directory.
 Press ENTER to continue...
 build-qmail
 Enter a directory where you would like to do this [/tmp/qmail]
 Binary package qmail will be compiled now
 If you want to apply a custom patch, switch to another console and do it now
 This can take long time, depending on your machine
 Press ENTER to continue...  STOP 

Die qmail-Sourcen sind nun im Verzeichnis /tmp/qmail/qmail-1.03 entpackt. Diese Sourcen werden nun gepatcht, erst dann wird die Installation fortgesetzt.

  • Patches einspielen

Info: Wenn die qmail-Pakete aus Debian/unstable (Sid) verwendet werden, bitte den Hinweis am Ende dieser Sektion beachten.

Die Konsole in der das build-qmail Script läft steht bei 'Press ENTER to continue...'. In einer neuen Konsole werden die benötigten Patches Tarpit, SMTP-AUTH und TLS installiert. Da die einzelnen Patches nicht mit den Debian qmail-Sourcen und untereinander kompatibel sind werden angepasste Patches verwendet. Achtung: Ich gebe keine Garantie auf die Funktionen der angepassten Patches!

cd /tmp/qmail wget http://cargal.org/downloads/HOW-TO/debianqmail/files/debianqmail_patches.tar.bz2 tar xvfj debianqmail_patches.tar.bz2

  1. Tarpit Patch

patch -d qmail-1.03 < debianqmail_patches/01tarpit/tarpit.patch_DEBIAN

 patching file qmail-smtpd.c
  1. SMTP-AUTH Patch

cp debianqmail_patches/02smtp-auth/README.auth debianqmail_patches/02smtp-auth/base64.c debianqmail_patches/02smtp-auth/base64.h qmail-1.03 patch -d qmail-1.03 < debianqmail_patches/02smtp-auth/auth.patch_DEBIAN

 patching file Makefile
 patching file TARGETS
 patching file qmail-smtpd.8
 patching file qmail-smtpd.c
  1. TLS Patch

patch -d qmail-1.03 < debianqmail_patches/03tls/tls.patch_DEBIAN

 patching file qmail-remote.c
 patching file qmail-smtpd.c
 patching file qmail-smtpd.c
 patching file qmail-remote.c
 patching file qmail-smtpd.8
 patching file qmail-remote.8
 patching file qmail-control.9
 patching file dns.c
 patching file ipalloc.h
 patching file tls.c
 patching file tls.h
 patching file ssl_timeoutio.c
 patching file ssl_timeoutio.h
 patching file TARGETS
 patching file Makefile-cert.mk
 patching file conf-cc
 patching file Makefile

Anmerkung: Es können weitere Meldungen beim TLS-Patch auftreten:

 Hunk #1 succeeded at 31 (offset 3 lines).
 Hunk #3 succeeded at 189 (offset 32 lines).
 Hunk #4 succeeded at 287 (offset 43 lines).
 ...

Diese Zeilen sagen aus das die Angaben im Patch-File nicht zu 100% mit den zu patchenden Dateien übereinstimmen aber das Patchen trotzdem erfolgreich war (succeeded). So lange keine Fehlermeldungen angezeigt werden kann der TLS-Patch ohne Bedenken genutzt werden. Wenn jemand weiss wie man den TLS-Patch soweit anpassen kann das die offset-Meldungen nicht mehr erscheinen bitte melden :)

Hinweis: Florian Holzhauer hat festgestellt das beim Patchen der qmail-Sourcen aus Debian/unstable (Sid) Probleme auftreten können. Er hat einen Mainpatch zusammengestellt der mit qmail-src in der Version 1.03-28 funktioniert. Bei der Version 1.03-29 funktioniert der Patch auch, die Meldungen Hunk #1 succeded kann man einfach ignorieren. Der Patch wird folgendermassen eingespielt:

 cd /tmp/qmail
 patch -p1 -d qmail-1.03 < mainpatch

Die anderen Patches müssen bei dieser Methode nicht eingespielt werden da sie bereits im Mainpatch enthalten sind. Der Mainpatch wurde von mir nicht getestet.

  • qmail Kompilieren und Installieren

Anschliessend wird die Installation von qmail-src fortgesetzt.

 Press ENTER to continue...

Die qmail-Sourcen werden automatisch kompiliert. Es sollten keine Fehler auftreten. Es kann sein das make mit einem Error abbricht wenn die Patches nicht richtig installiert wurden.

 Do you want to remove all files in /tmp/qmail, except qmail_1.03-24_i386.deb now? [Yn] 
 Do you want to install qmail_1.03-24_i386.deb now? [Yn]
 Do you want to purge qmail-src now? [yN] 

ls -l /tmp/qmail/qmail_1.03-24_i386.deb

 -rw-r--r--    1 root     root       369914 Mar  5 21:46 qmail_1.03-24_i386.deb

Achtung: Wenn man die TLS-Funktionen benutzen will und noch kein Zertifikat hat sollte das Verzeichnis qmail-src nicht gelöscht werden. Alternativ zur automatischen Installation kann qmail auch manuell installiert werden wenn z.B. Abhängigkeitsprobleme mit dem bereits installierten Mail-Server (exim) auftreten:

dpkg --install /tmp/qmail/qmail_1.03-24_i386.deb

 Selecting previously deselected package qmail.
 dpkg: regarding qmail_1.03-24_i386.deb containing qmail:
  qmail conflicts with mail-transport-agent
   exim provides mail-transport-agent and is installed.
 dpkg: error processing qmail_1.03-24_i386.deb (--install):
  conflicting packages - not installing qmail
 Errors were encountered while processing:
  qmail_1.03-24_i386.deb

dpkg --remove --force-depends exim

 dpkg: exim: dependency problems, but removing anyway as you request:
  mutt depends on exim | mail-transport-agent; however:
   Package exim is to be removed.
   Package mail-transport-agent is not installed.
   Package exim which provides mail-transport-agent is to be removed.
  mutt depends on exim | mail-transport-agent; however:
   Package exim is to be removed.
   Package mail-transport-agent is not installed.
   Package exim which provides mail-transport-agent is to be removed.
  at depends on mail-transport-agent; however:
   Package mail-transport-agent is not installed.
   Package exim which provides mail-transport-agent is to be removed.
  mailx depends on mail-transport-agent; however:
   Package mail-transport-agent is not installed.
   Package exim which provides mail-transport-agent is to be removed.
 (Reading database ... 13244 files and directories currently installed.)
 Removing exim ...
 Stopping MTA: done.

dpkg --install /tmp/qmail/qmail_1.03-24_i386.deb

 Unpacking qmail (from .../qmail/qmail_1.03-24_i386.deb) ...
 Performing install
 First installation of the Debian qmail package...
 Checking if qmail is already installed on this computer... no.
 Checking group qmail (gid 64010)... ok.
 Checking user alias (uid 64010, gid 65534, homedir /var/qmail/alias)... ok.
 Checking user qmaild (uid 64011, gid 65534, homedir /var/qmail)... ok.
 Checking user qmails (uid 64012, gid 64010, homedir /var/qmail)... ok.
 Checking user qmailr (uid 64013, gid 64010, homedir /var/qmail)... ok.
 Checking user qmailq (uid 64014, gid 64010, homedir /var/qmail)... ok.
 Checking user qmaill (uid 64015, gid 65534, homedir /var/qmail)... ok.
 Checking user qmailp (uid 64016, gid 65534, homedir /var/qmail)... ok.
  • Automatische qmail Konfiguration

Das Konfigurationsscript ermittelt den aktuellen Hostname und die IP-Adressen des Systems und nimmt einige grundsätzliche Einstellungen vor die in die Konfigurationsdateien eingetragen werden.

 Setting up qmail (1.03-24) ...
 Updating /etc/tcp.smtp database for tcpserver
 Your hostname is mailserver.
 Your host's fully qualified name in DNS is mailserver
 Putting mailserver into /var/qmail/control/me ...
 Putting mailserver into /var/qmail/control/defaultdomain ...
 Putting mailserver into /var/qmail/control/plusdomain ...

 Checking local IP addresses:
 127.0.0.1: Adding localhost to /var/qmail/control/locals...
 192.168.1.150: Adding mailserver to /var/qmail/control/locals...
 192.168.1.151: Adding example1.com to /var/qmail/control/locals...
 192.168.1.152: Adding example2.com to /var/qmail/control/locals...

 If there are any other domain names that point to you,
 you will have to add them to /var/qmail/control/locals.
 You don't have to worry about aliases, i.e., domains with CNAME records.

 Copying /var/qmail/control/locals to /var/qmail/control/rcpthosts...
 Now qmail will refuse to accept SMTP messages except to those hosts.
 Make sure to change rcpthosts if you add hosts to locals or virtualdomains!
 Before making any changes to your qmail configuration, please read
 /usr/doc/qmail/README.debian.  This contains a description of the differences
 bewtween other mailers on Debian, qmail on Debian, and qmail on other systems.
 If you were using sendmail (or smail) previously, you will also want to read
 the "qmail-upgrade" manpage, which details user-visible differences between
 sendmail and qmail.
 If you are new to qmail, you will want to at least peruse the qmail FAQ, which
 can be found in /usr/doc/qmail
 Do you want to start qmail now? [y/N] 
 Qmail will be started at the next reboot. Or you can start qmail manually when 
 you are ready by typing (as root) "/etc/init.d/qmail start" at a shell prompt.

Das qmail-Paket ist jetzt installiert und qmail kann über das init-Script /etc/init.d/qmail gestartet und gestoppt werden.

dpkg -la | grep qmail

 ii  qmail          1.03-24        Secure, reliable, efficient, simple mail transport system
 ii  qmail-src      1.03-24        Source only package for building qmail binary package

go to top of page5. Installation der qmail-Systemtools

  • Entscheidung: init-Script oder Daemontools

Es gibt mehrere Möglichkeiten die qmail Serverprozesse zu verwalten (Starten, Stoppen, Restarten, Statusanzeige, ...). Ein init-Script (/etc/init.d/qmail) ist die vorgegebene UNIX/Linux Einstellung. Die empfohlene Alternative ist eine Daemontools-Umgebung. Die qmail-Server (qmail, qmail-smtp, qmail-pop3) werden von den Daemontools überwacht und automatisch gestartet.

  • init-Script

Das qmail Debian-Paket legt automatisch das init-Script /etc/init.d/qmail an. In dieser Datei werden einige Einstellungen für qmail konfiguriert: - Die Default-Zustellungsart (Empfehlung ist Maildir):

  1. set default delivery method
  2. alias_empty="|/usr/sbin/qmail-procmail" # procmail delivery to /var/spool/mail

alias_empty="./Maildir/" # This uses qmail prefered ~/Maildir/ directory

                                         # You may want to maildirmake /etc/skel/Maildir
  1. alias_empty="./Mailbox" # This uses Mailbox file in users $HOME

- Die Log-Optionen für qmail:

logger="splogger qmail"

  1. logger="|accustamp >>/var/log/qmail.log" # If you have accustamp installed.
  2. logger=">>/var/log/qmail.log" # Does not give timing info.

- Per Default loggt splogger qmail nach /var/log/syslog. Folgende Einstellungen in der Datei /etc/syslog-ng/syslog-ng.conf ändern dieses Verhalten (Paket syslog-ng muss installiert sein):

  1. mail-destinations: mail-logs sollen nach mail.log mail.warn oder mail.err
destination mail { file("/var/log/mail.log" owner("root") group("adm") perm(0640)); };
destination mailwarn { file("/var/log/mail.warn" owner("root") group("adm") perm(0640)); };
destination mailerr { file("/var/log/mail.err" owner("root") group("adm") perm(0640)); };
  1. mail-filter: keine mail-logs nach syslog, mail soll nach mail :)
filter f_syslog { not facility(auth, authpriv, mail); };
filter f_mail { facility(mail); };
  1. mail-log
log { source(src); filter(f_mail); destination(mail); };
log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };
log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };

- qmail-Server Starten und Stoppen:

/etc/init.d/qmail start

 Starting mail-transfer agent: qmail.

/etc/init.d/qmail stop

 Stopping mail-transfer agent: qmail.
  • Daemontools

In der Daemontools-Umgebung (/service) werden run- und log-Scripts für die qmail-Server angelegt. In der aktuellen stabilen Debian Version (Woody) gibt es keine Pakete die qmail in der Daemontools-Umgebung einrichten. Die Pakete qmail-sv, qmail-smtp-sv und qmail-pop3-sv müssen aus Debian/unstable installiert werden, es gibt allerdings keine Garantie das die Pakete funktionieren ("unstable"). Alternativ können die Änderungen von Hand erstellt werden. Anmerkung von Christian Schmidt: Inzwischen gibt es neuere Pakete, eventuell testung/unstable in die /etc/apt/sources.list eintragen, niedrig Pinnen und Pakete mit apt-get install -t testing oder unstable installieren.

  • Pakete aus Debian/unstable installieren

wget http://http://linux.org.by/debian/pool/contrib/s/svtools/svtools_0.3-1_all.deb dpkg --install svtools_0.3-1_all.deb

wget http://linux.org.by/debian/pool/contrib/q/qmail-sv/qmail-sv_0-4_all.deb dpkg --install qmail-sv_0-4_all.deb

wget http://linux.org.by/debian/pool/contrib/q/qmail-smtp-sv/qmail-smtp-sv_0-6_all.deb dpkg --install qmail-smtp-sv_0-6_all.deb

wget http://linux.org.by/debian/pool/contrib/q/qmail-pop3-sv/qmail-pop3-sv_0-5_all.deb dpkg --install qmail-pop3-sv_0-5_all.deb

dpkg -la | grep svtools

 ii  svtools        0.3-1          Utilities for daemontools and multilog

dpkg -la | grep qmail

 ii  qmail          1.03-24        Secure, reliable, efficient, simple mail tra
 ii  qmail-pop3-sv  0-5            Running qmail-pop3d in daemontools environme
 ii  qmail-smtp-sv  0-6            Running qmail-smtpd in daemontools environme
 ii  qmail-src      1.03-24        Source only package for building qmail binar
 ii  qmail-sv       0-4            Running qmail in daemontools environment
  • Das Verzeichnis /services

Die Pakete legen das Verzeichnis /service an, in diesem Verzeichnis sind die run- und log-Scripts für die zu überwachenden Server.

ls -l /service

 lrwxrwxrwx    1 root     root           15 Mar  2 14:18 /service -> /var/lib/svscan

ls -l /service/

 lrwxrwxrwx    1 root     root           13 Mar  6 20:17 qmail -> /etc/sv/qmail
 lrwxrwxrwx    1 root     root           18 Mar  6 20:17 qmail-pop3 -> /etc/sv/qmail-pop3
 lrwxrwxrwx    1 root     root           18 Mar  6 20:17 qmail-smtp -> /etc/sv/qmail-smtp

Die aufgelisteten Server werden von den Daemontools automatisch gestartet.

ps aux | grep qmail

 root      7273  0.0  0.0  1240  288 ?        S    20:17   0:00 supervise qmail
 root      7275  0.0  0.0  1240  288 ?        S    20:17   0:00 supervise qmail-smtp
 qmails    7277  0.0  0.0  1296  364 ?        S    20:17   0:00 qmail-send
 root      7278  0.0  0.0  1252  300 ?        S    20:17   0:00 qmail-lspawn ./Maildir/
 qmailr    7279  0.0  0.0  1248  296 ?        S    20:17   0:00 qmail-rspawn
 root      7280  0.0  0.0  1240  288 ?        S    20:17   0:00 supervise qmail-pop3
 qmailq    7282  0.0  0.0  1244  320 ?        S    20:17   0:00 qmail-clean
 qmaill    7283  0.0  0.0  1252  284 ?        S    20:17   0:00 multilog t ./main
 qmaild    7284  0.0  0.0  1304  496 ?        S    20:17   0:00 /usr/bin/tcpserver -UHRDv -x /etc/tcp.smtp.cdb 0.0.0.0 smtp /usr/sbin/qmail-smtpd
 qmaill    7285  0.0  0.0  1252  284 ?        S    20:17   0:00 multilog t ./main
 root      7286  0.0  0.0  1308  488 ?        S    20:17   0:00 /usr/bin/tcpserver -HRDv -x /etc/tcp.pop3.cdb 0.0.0.0 pop-3 /usr/sbin/qmail-popup mailserver /usr/bin/checkpassword /usr/sbin/qmail-pop3d Maildir
 qmaill    7288  0.0  0.0  1252  284 ?        S    20:17   0:00 multilog t ./main
  • Anpassen des init-Scripts

Die qmail-sv Pakete installieren ein eigenes init-Script /etc/init.d/qmail (das ursprüngliche init-Script wird nach /etc/init.d/qmail.distrib gespeichert). Das Programm svinitd übersetzt init-Befehle (start, stop, restart) in svc-Befehle. Das init-Script aus dem aktuellen Paket in Debian/unstable enthält nur den Eintrag für den qmail-Server, die Einträge für qmail-smtp und qmail-pop3 müssen hinzugefügt werden:

  1. !/bin/sh -e
  2. init.d wrapper script for supervised service:
  3. Automatically created by svinitd-create
  4. Klaus Reimer

svinitd qmail $1 svinitd qmail-smtp $1 svinitd qmail-pop3 $1

Alternativ kann ein eigenes init-Script mit erweiterten Abfragen und Funktionen eingesetzt werden:

  1. !/bin/bash
  2. /etc/init.d/qmail : start or stop the qmail mail subsystem.

case "$1" in

 start)
   echo "Starting mail-transfer-agent: qmail"
   if svok /service/qmail ; then
     svc -u /service/qmail
     svc -u /service/qmail/log
   else
     echo qmail supervise not running
   fi
   if svok /service/qmail-pop3 ; then
     svc -u /service/qmail-pop3
     svc -u /service/qmail-pop3/log
   else
     echo qmail-pop3 supervise not running
   fi
   if svok /service/qmail-smtp ; then
     svc -u /service/qmail-smtp
     svc -u /service/qmail-smtp/log
   else
     echo qmail-smtp supervise not running
   fi
   if [ -d /var/lock/subsys ]; then
     touch /var/lock/subsys/qmail
   fi
   ;;
 stop)
   echo "Stopping mail-transfer-agent: qmail"
   svc -d /service/qmail-pop3
   svc -d /service/qmail-pop3/log
   svc -d /service/qmail-smtp
   svc -d /service/qmail-smtp/log
   svc -d /service/qmail
   svc -d /service/qmail/log
   if [ -f /var/lock/subsys/qmail ]; then
     rm /var/lock/subsys/qmail
   fi
   ;;
 restart)
   $0 stop
   $0 start
   ;;
 queue)
   qmail-qstat
   qmail-qread
   ;;
 stat)
   svstat /service/qmail
   svstat /service/qmail/log
   svstat /service/qmail-pop3
   svstat /service/qmail-pop3/log
   svstat /service/qmail-smtp
   svstat /service/qmail-smtp/log
   qmail-qstat
   ;;
 help)
   cat <<HELP
 start -- starts mail service (qmail, qmail-pop3, qmail-smtp)
  stop -- stops mail service (qmail, qmail-pop3, qmail-smtp)

restart -- stops and restarts mail service (qmail, qmail-pop3, qmail-smtp)

 queue -- shows status of queue
  stat -- displays status of mail service

HELP

   ;;
 *)
   echo "Usage: $0 {start|stop|restart|queue|stat|help}"
   exit 1
   ;;

esac

exit 0

  • Verwalten der qmail-Server

Die qmail-Server können über das init-Script oder über direkte svc-Befehle verwaltet werden. init-Script:

/etc/init.d/qmail stop # beendet die qmail-Services

 Starting mail-transfer-agent: qmail

/etc/init.d/qmail start # startet die qmail-Services

 Stopping mail-transfer-agent: qmail

/etc/init.d/qmail queue # zeigt den Status der Queue

 messages in queue: 0
 messages in queue but not yet preprocessed: 0

/etc/init.d/qmail stat # zeigt den Status der qmail-Services

 /service/qmail: up (pid 7676) 12 seconds
 /service/qmail/log: up (pid 7553) 12 seconds
 /service/qmail-pop3: up (pid 7682) 12 seconds
 /service/qmail-pop3/log: up 12 seconds
 /service/qmail-smtp: up (pid 7687) 12 seconds
 /service/qmail-smtp/log: up 12 seconds
 messages in queue: 0
 messages in queue but not yet preprocessed: 0

svc-Befehle:

svc -d /service/qmail # schickt das TERM-Signal an den Service (entspricht stop) svc -d /service/qmail/log

svstat /service/qmail # zeigt den Status des Services (entspricht status)

 /service/qmail: down 80 seconds, normally up

svstat /service/qmail/log

 /service/qmail/log: down 80 seconds, normally up

svc -u /service/qmail # startet den Service (entspricht start) svc -u /service/qmail/log

svstat /service/qmail # zeigt den Status des Services (entspricht status)

 /service/qmail: up (pid 7548) 12 seconds

svstat /service/qmail/log

 /service/qmail/log: up (pid 7549) 12 seconds
  • Log-Optionen für qmail

Die log-Services der qmail-Services schreiben die Log-Informationen im präzisen TAI64N-Format in die folgenden Dateien:

/var/log/sv/qmail/current /var/log/sv/qmail-pop3/current /var/log/sv/qmail-smtp/current

Mehr Informationen zu den qmail-Logdateien unter 11. Fehlersuche und Hilfe.

  • Konfiguration der Linux-Runlevels zum automatischen Starten der qmail-Server

Damit die qmail-Server beim Booten automatisch gestartet werden, sind Einträge in den entsprechenden Runlevels notwendig:

find /etc | grep -r qmail | grep /etc/rc

 /etc/rc0.d/K20qmail
 /etc/rc1.d/K20qmail
 /etc/rc2.d/S20qmail
 /etc/rc3.d/S20qmail
 /etc/rc4.d/S20qmail
 /etc/rc5.d/S20qmail
 /etc/rc6.d/K20qmail

ls -lR /etc/ | grep qmail | grep init.d

 lrwxrwxrwx    1 root     root           15 Mar  5 22:10 K20qmail -> ../init.d/qmail
 lrwxrwxrwx    1 root     root           15 Mar  5 22:10 K20qmail -> ../init.d/qmail
 lrwxrwxrwx    1 root     root           15 Mar  5 22:10 S20qmail -> ../init.d/qmail
 lrwxrwxrwx    1 root     root           15 Mar  5 22:10 S20qmail -> ../init.d/qmail
 lrwxrwxrwx    1 root     root           15 Mar  5 22:10 S20qmail -> ../init.d/qmail
 lrwxrwxrwx    1 root     root           15 Mar  5 22:10 S20qmail -> ../init.d/qmail
 lrwxrwxrwx    1 root     root           15 Mar  5 22:10 K20qmail -> ../init.d/qmail

qmail ist nun erfolgreich in einer Daemontools-Umgebung installiert und wird beim Booten automatisch gestartet.

go to top of page6. Installation und Konfiguration von vpopmail

  • Beschreibung

Da viele qmail-Konfigurationseinstellungen die in dieser Anleitung beschrieben sind auf vpopmail-Funktionen zugreifen wird vor der qmail Konfiguration die Installation und Konfiguration von vpopmail beschrieben. Ein qmail-System kommt auch ohne vpopmail mit System-Benutzeraccounts oder als Alternative zu vpopmail mit vmailmgr aus. Da selbst die Debian/unstable Distribution nur ältere (Version 4.9.9) vpopmail Pakete enthält werden die aktuellen Sourcen (Version 4.2.1) von der inter7-Webseite heruntergeladen, konfiguriert, kompiliert und ins System installiert. Anmerkung von Christian Schmidt: Inzwischen gibt es neue Versionen von vpopmail, diese sollten auch installiert werden :-)

  • Download und Vorbereitung

Die stabilen Sourcen werden von der inter7-Webseite heruntergeladen:

wget http://www.inter7.com/vpopmail/vpopmail-5.2.1.tar.gz tar xvfz vpopmail-5.2.1.tar.gz cd vpopmail-5.2.1

Es wird empfohlen die Dateien INSTALL und README zu lesen :) Es muss eine Gruppe und ein Benutzer angelegt werden. Im Home-Verzeichnis des Benutzers werden die vpopmail-Dateien und die Mails der virtuellen Benutzer abgelegt, es wird also empfohlen ein Verzeichnis auf einer grösseren Partition zu wählen:

groupadd -g 89 vchkpw useradd -g vchkpw -u 89 -d /var/vpopmail vpopmail mkdir /var/vpopmail; chown vpopmail.vchkpw vpopmail

  • Konfiguration

vpopmail wird mit folgenden Optionen (siehe Dokumentation) kompiliert:

./configure \ > --enable-clear-passwd=y \ > --enable-valias=y \ > --enable-roaming-users=y \ > --enable-relay-clear-minutes=10 \ > --enable-tcpserver-file=/etc/tcp.smtp \ > --enable-auth-logging=y \ > --enable-logging=y \ > --enable-log-name=vpopmail \ > --enable-admin-email=admin@mailserver

Den String mailserver ersetzen durch den echten Hostnamen des Mailservers. Das configure-Script zeigt am Ende die komplette Konfiguration:

          vpopmail 5.2.1           
           Current settings

vpopmail directory = /home/vpopmail

              uid = 89
              gid = 89
         ip alias = OFF --enable-ip-alias-domains=n (default)

address extentions = OFF --enable-qmail-ext=n (default)

    roaming users = ON  --enable-roaming-users=y
   tcpserver file = /etc/tcp.smtp
   open_smtp file = /home/vpopmail/etc/open-smtp
       user quota = OFF --enable-defaultquota=NOQUOTA default

table optimization = many domains --enable-many-domains=y default

      auth module = cdb default
 system passwords = OFF --enable-passwd=n default
     file locking = ON  --enable-file-locking=y default
        file sync = OFF --enable-file-sync=n default disable vdelivermail fsync
     auth logging = ON  --enable-auth-logging=y default
    mysql logging = OFF --enable-mysql-logging=n default
     clear passwd = ON  --enable-clear-passwd=y (default)
valias processing = ON  --enable-valias=y
       pop syslog = show successful and failure login attempts
                    --enable-logging=y
   default domain =  --enable-default-domain=
         auth inc = -Icdb
         auth lib = 
  • Installation

Zuerst werden die Programme kompiliert:

make

Danach kann vpopmail in das angegebene Verzeichnis (/var/vpopmail) installiert werden:

make install-strip

  • Konfiguration

Die Option --enable-roaming-users ermöglicht SMTP-after-POP Funktionen. Sobald sich ein Benutzer erfolgreich am POP3-Server authentifiziert hat wird seine IP-Adresse in die Datei /var/vpopmail/etc/open-smtp eingetragen. Ein weiteres Programm schreibt die IP-Adresse in die Datei /etc/tcp.smtp.cdb die von qmail-smtp ausgewertet wird. Damit die IP-Adresse nach der angegebenen Zeit (10 Minuten) wieder ausgetragen wird ist folgender crontab-Eintrag notwendig:

crontab -e

 */30 * * * * /var/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

go to top of page7. Administration von vpopmail

  • Virtuelle Domain hinzufügen

Eine virtuelle Domain hinzufügen (mit Passwort für den Postmaster):

/var/vpopmail/bin/vadddomain example1.com

 Please enter password for postmaster: 
 enter password again: 

Das Programm vadddomain fügt die virtuelle Domain automatisch in die entsprechenden qmail-Dateien ein:

grep -ri example1.com /etc/qmail/

 /etc/qmail/rcpthosts:example1.com
 /etc/qmail/users/assign:+example1.com-:example1.com:89:89:/var/vpopmail/domains/example1.com:-::
 Binary file /etc/qmail/users/cdb matches
 /etc/qmail/virtualdomains:example1.com:example1.com

Zusätzlich wird ein Verzeichnis für die Domain im Verzeichnis /var/vpopmail/domains/ angelegt:

ls -l /var/vpopmail/domains/example1.com/

 -rw-------    1 vpopmail vchkpw         34 Mar  7 17:57 .dir-control
 -rw-------    1 vpopmail vchkpw         54 Mar  7 17:57 .qmail-default
 -rw-------    1 vpopmail vchkpw          0 Mar  7 17:57 .vpasswd.lock
 drwx------    3 vpopmail vchkpw       4096 Mar  7 17:57 postmaster
 -rw-------    1 vpopmail vchkpw        119 Mar  7 17:57 vpasswd
 -rw-------    1 vpopmail vchkpw       2189 Mar  7 17:57 vpasswd.cdb

Danach sendet vadddomain das HUP-Signal an qmail-send damit die neuen Konfigurationsdateien eingelesen werden. Sollen zwei Domains (z.B. example1.com und example2.com) mit identischen Benutzern und Mail-Accounts eingerichtet werden, wird eine Aliasdomain angelegt (example2.com ist ein Alias auf example1.com):

/var/vpopmail/bin/vaddaliasdomain example2.com example1.com

  • Virtuelle Benutzer zu einer virtuellen Domain hinzufügen

Einen virtuellen Benutzer zu einer virtuellen Domain hinzufügen:

/var/vpopmail/bin/vadduser testuser1@example1.com

 Please enter password for testuser1@example1.com
 enter password again:

Das Programm vadduser fügt den Benutzer dem entsprechenden Domain-Verzeichnis hinzu:

ls -l /var/vpopmail/domains/example1.com/testuser1/

 drwx------    5 vpopmail vchkpw       4096 Mar  7 18:11 Maildir
 -rw-------    1 vpopmail vchkpw          7 Mar  7 18:11 lastauth
  • Passwort eines virtuellen Benutzers ändern

Das Passwort eines virtuellen Benutzers kann nachträglich geändert werden:

/var/vpopmail/bin/vpasswd testuser1@example1.com

 Please enter password for testuser1@example1.com:
 enter password again: 
  • Virtuellen Benutzers löschen

Einen virtuellen Benutzer löschen:

/var/vpopmail/bin/vdeluser testuser1@example1.com

  • Virtuellen Domain löschen

Eine virtuelle Domain löschen:

/var/vpopmail/bin/vdeldomain example1.com

go to top of page8. Konfiguration von qmail

  • Konfigurationsdateien

Die qmail Konfigurationsdateien liegen im Verzeichnis /etc/qmail (das Verzeichnis /var/qmail/control ist ein Link auf das Verzeichnis):

ls -l /etc | grep qmail

 lrwxrwxrwx    1 root     root           10 Mar  5 22:10 /var/qmail/control -> /etc/qmail

Folgende Dateien wurden vom Debian Paket automatisch angelegt: - me: enthält den Haupt-Domainnamen (FQDN = full qualified domain name) des Systems, wird als Default-Vorlage für andere Konfigurationsdateien verwendet - defaultdomain: wird zu jedem Host hinzugefügt der keinen Punkt (.) enthält (z.B. wird aus testuser testuser@mailserver) - plusdomain: wird zu jedem Host hinzugefügt der mit einem Plus-Zeichen (+) endet - locals: enthält Domains die auf dem lokalen System behandelt/verteilt werden sollen, hier müssen die virtuellen Domains eingetragen werden (z.B. localhost, mailserver, example1.com, example2.com, ...) - rcpthosts: enthält die erlaubten RCPT Domains. Mails an Domains die hier nicht aufgelistet sind werden abgewiesen, Ausnahme ist SMTP-Relaying Weitere Konfigurationsdateien können nach Bedarf angelegt und konfiguriert werden.

  • Maildir

Die sv-Pakete richten qmail automatisch für Maildirs ein:

cat /service/qmail/run

 #!/bin/sh
 exec 2>&1
 exec /usr/bin/envuidgid qmaild /usr/sbin/qmail-start ./Maildir/
  • POP3-Server

Damit sich die virtuellen Benutzer von vpopmail am POP3-Server anmelden können müssen die Einstellungen im Service-Script geändert werden:

cat /service/qmail-pop3/run

 #!/bin/sh
 exec 2>&1
 exec envdir ./env sh -c '
   exec /usr/bin/envuidgid qmaild \
   /usr/bin/tcpserver -HRDv -x tcp.cdb $IP pop-3 \
   /usr/sbin/qmail-popup `hostname -f` \
   /var/vpopmail/bin/vchkpw \
   /usr/sbin/qmail-pop3d Maildir
 '

Neu ist der Eintrag /var/vpopmail/bin/vchkpw der den Eintrag /usr/bin/checkpassword ersetzt. Nach einem Neustart von qmail-pop3 (/etc/init.d/qmail restart) kann ein virtueller Benutzer eine Verbindung zum POP3-Server aufbauen und seine Mails abrufen. Die Funktion kann z.B. mit mozilla-mail getestet werden, wichtig ist das als Benutzername der Benutzername+Domainname verwandet wird (testuser1@example1.com anstatt testuser1).

  • SMTP-Relaying

qmail wird so konfiguriert das kein Open-Relaying möglich ist, d.h. das der SMTP-Server keine Mails von unbekannten Benutzern annimmt. Die Default-Einstellung deaktiviert Relaying, dies wird in der Datei /etc/qmail/rcpthosts gesteuert. In diese Datei werden alle Domainnamen für die Mails angenommen werden sollen eingetragen:

cat /etc/qmail/rcpthosts

 localhost
 mailserver
 example1.com
 example2.com
 ...

Der SMTP-Daemon überprüft vor der Annahme einer Mail ob die RCPT-Domain in rcpthosts-Liste steht, ist das nicht der Fall wird die Mail abgewiesen:

553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)

Ob das Relaying wirklich deaktiviert ist, kann folgendermassen getestet werden:

telnet mailexchanger.de 25 HELO MAIL From:<user@domain.tdl> RCPT To:<user@domain.tdl> DATA Subject: relay-test body . QUIT

Ist die Domain domain.tdl in der rcpthosts-Liste aufgeführt, wird die Mail angenommen:

telnet mailserver 25 Connected to mailserver. 220 mailserver ESMTP HELO 250 mailserver MAIL From:<user@domain.tdl> 250 ok RCPT To:<user@domain.tdl> 250 ok DATA 354 go ahead Subject: subject body . 250 ok 1041768034 qp 291 QUIT 221 mailserver Connection closed by foreign host.

Ist die Domain domain.tdl nicht in der rcpthosts-Liste aufgeführt, wird die Mail abgewiesen:

telnet mailserver 25 Connected to mailserver. 220 mailserver ESMTP HELO 250 mailserver MAIL From:<user@domain.tdl> 250 ok RCPT To:<user@domain.tdl> 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1) QUIT 221 mailserver Connection closed by foreign host.

Fazit: qmail verschickt Mails nur an Domains die in der rcpthosts-Liste angegeben sind. Da aber nicht alle Domains dieser Liste hinzugefügt werden können wird SMTP-Relaying für authorisierte Benutzer uneingeschränkt freigeschalten. Diese Benutzer können dann Mails an beliebige Domains schicken, auch wenn diese nicht in der rcpthosts-Liste stehen. Für die SMTP-Relaying Funktionen gibt es mehrere Möglichkeiten:

  • SMTP-AUTH mit System-Benutzern

Die Benutzer müssen sich vor dem Senden einer Mail am SMTP-Daemon authentifizieren, das funktioniert mit SMTP-AUTH. Ist der Benutzer authentifiziert, funktioniert der SMTP-Server wie ein Open-Relay für diesen bestimmten Benutzer, d.h. er kann Mails an alle Domains verschicken. Zur Authentifizierung wird in der Default-Einstellung das Programm checkpassword von qmail 1.03 benutzt. checkpassword authentifiziert Benutzername und Password anhand der /etc/shadow - Datei. Da diese Datei nur für den Benutzer root lesbar sein sollte ist diese Einstellung unsicher. Eine Alternative sind virtuelle Benutzer die mit vpopmail angelegt und verwaltet werden, vchkpw übernimmt als Ersatz für checkpassword die Authentifizierung an der eigenen (virtuellen) Benutzer-Datenbank. Damit SMTP-AUTH in Verbindung mit qmail funktioniert muss der SMTP-AUTH - Patch einkompiliert worden sein, ob dies der Fall ist kann folgendermassen festgestellt werden:

telnet mailserver 25 Connected to mailserver. 220 mailserver ESMTP EHLO 250-mailserver 250-STARTTLS 250-AUTH LOGIN CRAM-MD5 PLAIN 250-AUTH=LOGIN CRAM-MD5 PLAIN 250-PIPELINING 250 8BITMIME

An den AUTH-Zeilen erkennt man das der SMTP-Daemon Authentifizierung unterstützt. Damit der SMTP-Daemon die Authentifizierungsfunktionen auch benutzt muss das Service-Script /service/qmail-smtp/run angepasst werden:

  1. !/bin/sh

exec 2>∧1 exec envdir ./env sh -c '

 exec /usr/bin/softlimit -m $MEMORYLIMIT \
 /usr/bin/envuidgid qmaild \
 /usr/bin/tcpserver -UHRDv -x /etc/tcp.cdb $IP smtp \
 /usr/sbin/qmail-smtpd mailserver /usr/bin/checkpassword /bin/true

'

Neu sind in der Zeile in der qmail-smtpd gestartet wird 3 Parameter: - mailserver: Der Hostname des Systems, wird für die CRAM-MD5-Abfrage benötigt - /usr/bin/checkpassword: qmail-smtpd ruft checkpassword auf und übergibt Benutzername und Passwort - /bin/true: Wird Benutzer und Passwort erfolgreich authentifiziert, wird ein Subprogramm aufgerufen das lediglich Status 0 zurückgibt (true) Nachdem der qmail-smtp Daemon neu gestartet wurde (/etc/init.d/qmail restart) sollten sich die System-Benutzer per SMTP-AUTH anmelden können. Die Authentifizierung kann z.B. mit mozilla -mail getestet werden, bei den SNMP-Einstellungen muss Username und Passwort aktiviert werden. Beim Senden von Mails erscheint nun wie beim Abrufen von Mails per POP3 ein Anmeldefenster. Bei erfolgreicher Authentifizierung wird die Mails verschickt, andernfalls erscheint eine Fehlermeldung.

  • SMTP-AUTH mit virtuellen Benutzern

Der SMTP-Daemon nutzt wie der POP3-Daemon per Default das Programm checkpassword um Anmeldungen per System-Passwort-Datenbank zu authentifizieren. Damit sich die virtuellen Benutzer von vpopmail am SMTP-Server authentifizieren können müssen die Einstellungen im Service-Script geändert werden:

  1. !/bin/sh

exec 2>∧1 exec envdir ./env sh -c '

 exec /usr/bin/softlimit -m $MEMORYLIMIT \
 /usr/bin/envuidgid qmaild \
 /usr/bin/tcpserver -UHRDv -x tcp.cdb -u 89 -g 89 $IP smtp \
 /usr/sbin/qmail-smtpd mailserver /var/vpopmail/bin/vchkpw /bin/true

'

Wichtig sind die Einträge /var/vpopmail/bin/vchkpw anstatt /usr/bin/checkpassword und -u 89 -g 89. Nach einem Restart des SMTP-Servers (/etc/init.d/qmail restart) kann ein virtueller Benutzer per SMTP eine Verbindung aufbauen und Mails verschicken. Kann mit z.B. mozilla -mail getestet werden, wichtig ist wieder das als Benutzername der Benutzername + Domainname (testuser1@example1.com) angegeben wird. Als weitere Alternative bietet sich (auch zusätzlich zu SMTP-AUTH) die SMTP-after-POP Authentifizierung an.

  • SMTP-after-POP

SMTP-after-POP erlaubt einem Host SMTP-Relaying (für eine bestimmte Zeitspanne) wenn er sich vorher erfolgreich per POP3 authentifiziert hat. Wurde vpopmail mit der Option

 > --enable-roaming-users=y \

kompiliert und installiert, kann vpopmail die SMTP-after-POP - Funktion übernehmen. Wenn sich ein Benutzer am qmail-pop3 - Server authentifiziert, schreibt vpopmail die IP-Adresse in die Datei /var/vpopmail/etc/open-smtp :

cat /home/vpopmail/etc/opem-smtp

 192.168.1.101:allow,RELAYCLIENT="",RBLSMTPD=""   1041800287
 192.168.1.102:allow,RELAYCLIENT="",RBLSMTPD=""   1041859621
 192.168.1.103:allow,RELAYCLIENT="",RBLSMTPD=""   1041862352

Diese Einträge werden automatisch in das Datenbankfile /etc/tcp.smtp.cdb übertragen. Der qmail-smtp Service muss so konfiguriert sein das der tcpserver-Eintrag mit der Option -x auf dieses Datenbankfile zugreift:

cat /service/qmail-smtp/run :

 #!/bin/sh
 exec 2>∧1
 exec envdir ./env sh -c '
   exec /usr/bin/softlimit -m $MEMORYLIMIT \
   /usr/bin/envuidgid qmaild \
   /usr/bin/tcpserver -UHRDv -x /etc/tcp.smtp.cdb -u 89 -g 89 $IP smtp \
   /usr/sbin/qmail-smtpd mailserver /var/vpopmail/bin/vchkpw /bin/true
 '

Wichtig ist die Zeile '/usr/bin/tcpserver -UHRDv -x /etc/tcp.smtp.cdb -u 89 -g 89 $IP smtp \'. qmail-smtp liest die Einträge aus /etc/tcp.smtp.cdb und öffnet das Relay für die eingetragenen Benutzer die dann Mails über den SMTP-Server verschicken können. Info: Diese SMTP-after-POP - Lösung unterstützt keine SMTP-Benutzung nach erfolgreichem IMAP-Login (SMTP-after-IMAP).

  • Alias-Konfiguration

Es wird festgelegt, an wen System-Mails (root, postmaster, mailer-daemon) geschickt werden sollen (im Beispiel bekommt der Benutzer admin die Mails):

echo admin > /var/qmail/alias/.qmail-root echo admin > /var/qmail/alias/.qmail-postmaster echo admin > /var/qmail/alias/.qmail-mailer-daemon chmod 644 /var/qmail/alias/.qmail-*

  • Benutzer-Maildir

Diese Option ist nur notwendig wenn nicht mit virtuellen Benutzern von vpopmail oder vmailmgr sondern den System-Benutzern (mit eigenem Home-Verzeichnis pro Benutzer) gearbeitet werden soll. Jeder Benutzer dem qmail Mails zuordnen soll braucht in seinem Homeverzeichnis einen speziellen Ordner namens Maildir. Dieses Verzeichnis wird als Benutzer (z.B. admin) mit folgendem Befehl angelegt:

maildirmake /home/admin/Maildir ls -l /home/admin/

 drwx------    5 admin    admin        4096 Mar  6 21:39 Maildir

ls -l /home/admin/Maildir/

 drwx------    2 admin    admin        4096 Mar  6 21:39 cur
 drwx------    2 admin    admin        4096 Mar  6 21:39 new
 drwx------    2 admin    admin        4096 Mar  6 21:39 tmp

Damit neue Benutzer die mit adduser dem System hinzugefügt werden automatisch ein Maildir erhalten wird als root ein Maildir im /etc/skel Verzeichnis erstellt:

maildirmake /etc/skel/Maildir

  • TLS (SSL)

Das Protokoll TLS (Transport Layer Security), früher SSL (Secure Socket Layer), ermöglicht Verschlüsselung, Datenintegrität und beidseitige Authentifizierung. Bei einer TLS-Verbindung werden die Informationen (z.B. das Passwort) nicht mehr im Klartext sondern verschlüsselt übertragen. Wichtig: Bei dieser Methode wird lediglich die Verbindung Mailserver <-> Mailclient verschlüsselt, nicht die Mail selbst (dazu sind zusätzliche Programme notwendig). Für Kommunikation zwischen Client und qmail-smtpd mit TLS-Verschlüsselung ist ein TLS-Zertifikat notwendig. Ein 'make cert' in den TLS-gepatchten qmail-Sources erstellt ein selbst signiertes TLS-Zertifikat und kopiert es nach /var/qmail/control:

ls -l /var/qmail/control/*.pem

 lrwxrwxrwx    1 qmaild   qmail          33 Mar  9 15:56 clientcert.pem -> /var/qmail/control/servercert.pem
 -rwxrwx---    1 vpopmail qmail        1969 Mar 16 19:34 servercert.pem

Wichtig: Die Filesystem-Rechte und Besitzer/Gruppe auf diese Dateien müssen beachtet werden (nur lesbar für den entsprechenden qmail-smtp-Benutzer und die qmail-Gruppe bzq. vpopmail-Benutzer wenn vpopmail benutzt wird) da der private-Key enthalten ist. Wenn bereits ein TLS-Zertifikat vorhanden ist oder ein eigenes Zertifikat (self-signed) benutzt werden soll kann der 'make cert' Schritt übergangen werden. Das TLS-Zertifikat muss den private-Key und den public-Key des Servers enthalten und wieder im Verzeichnis /var/qmail/control liegen:

cat /var/qmail/control/servercert.pem

 -----BEGIN RSA PRIVATE KEY-----
 [ ... ]
 -----END RSA PRIVATE KEY-----
 -----BEGIN CERTIFICATE-----
 [ ... ]
 -----END CERTIFICATE-----

Jetzt kann von einem Mail-User-Agent mit SSL/TLS-Unterstützung (z.B. mozilla-mail) eine sichere (verschlüsselte) Verbindung aufgebaut werden. Dazu muss beim Outgoing Server (SMTP) die Option "Use secure connection (SSL)" auf Always oder When available gesetzt werden. Beim Versenden von Mails wird dann eine verschlüsselte Verbindung aufgebaut, per SMTP-AUTH oder SMTP-after-POP das Relay freigeschalten und die Mail verschickt.

go to top of page9. Zusatzprogramme

  • Autoresponder

Autoresponder schickt eine automatisch generierte Antwort an den Absender eingehender Nachrichten. Nützlich z.B. als Abwesenheitsnotiz "Bin im Urlaub :-)" Installation autoresponder:

apt-get install autorespond dpkg -la | grep autorespond

 ii  autorespond    2.0.2-1        email autoresponder for qmail
  • ezmlm

ezmlm ist ein Mailing List Manager, es ermöglicht das Aufsetzen und Verwalten von Mailinglists. Installation ezmlm:

apt-get install ezmlm-src build-ezmlm

 Enter a directory where you like to do this [/tmp/ezmlm] 
 Do you want to remove all files in /tmp/ezmlm, except ezmlm-idx_0.53-6_i386.deb now? [Yn] 
 Do you want to install ezmlm-idx_0.53-6_i386.deb now? [Yn] 
 Do you want to purge ezmlm-src now? [yN] 

dpkg -la | grep ezmlm

 ii  ezmlm-idx      0.53-6         easy-to-use high-speed mailing list manager 
 ii  ezmlm-src      0.53-6         easy-to-use high-speed mailing list manager 

Zusätzlich kann ezmlm-browse installiert werden.

  • QmailAdmin

QmailAdmin ist ein Web-Interface zur Verwaltung eines qmail-Systems mit virtuellen Domains von vpopmail. Voraussetzung ist zusätzlich zum qmail-System mit ezmlm und Autoresponder ein Webserver (z.B. Apache). Funktionen: - Benutzerverwaltung (hinzufügen und löschen von Benutzern) - Alias-Verwaltung - Forwarder-Verwaltung - Mailinglists - Autoresponder Der Benutzer postmaster kann alle Benutzer-Accounts und Mailinglisten einer virtuellen Domain administrieren, ein POP3-Benutzer der sich mit seinen POP3-Daten anmeldet administriert sein eigenes eMail-Konto. Installation des Source-Pakets:

wget http://www.inter7.com/devel/qmailadmin-1.0.6.tar.gz tar xvfz qmailadmin-1.0.6.tar.gz ./configure --enable-htmldir=/home/www/htdocs --enable-cgibindir=/home/www/htdocs/cgi-bin --with-htmllibdir=/usr/share --enable-autoresponder-bin=/usr/bin/autorespond --enable-ezmlmdir=/usr/bin

Kompilieren:

make

Installieren:

 make install

Es werden die entsprechenden Verzeichnisse und Dateien angelegt:

ls -l /home/www/htdocs/cgi-bin/

 -rwsr-sr-x    1 vpopmail vchkpw     106344 Mar  8 19:42 qmailadmin

Durch Aufrufen des CGI-Scripts /home/www/htdocs/cgi-bin/qmailadmin (z.B. http://www.mailserver/cgi-bin/qmailadmin) im Webbrowser bekommt man das QmailAdmin Webinterface. Anmerkung: Das Debian Standardverzeichnis fuer htmldir ist /var/www und bei cgibindir /usr/lib/cgi-bin.

Verwalten einer Domain: Als Benutzername wird 'postmaster' verwendet, Domain Name ist der Name der mit vadddomain angelegten Domain (z.B. example1.com), Passwort ist das angegebene Passwort für den Postmaster. Verwalten eines Benutzeraccounts:Als Benutzername wird der POP3-Benutzername angegeben (z.B. testuser1), Domain Name ist der Name der mit vadddomain angelegten Domain (z.B. example1.com), Passwort ist das angegebene Passwort für den POP3-Benutzer beim Anlegen der Domain mit vadddomain.

Limit- und ServicekontrolleUm eine Limit- und Servicekontrolle für eine Domain zu aktivieren, wird die Datei .qmailadmin-limits im virtuellen Domain-Verzeichnis angelegt:

touch /var/vpopmail/domains/example1.com/.qmailadmin-limits chown vpopmail.vchkpw /var/vpopmail/domains/example1.com/.qmailadmin-limits chmod 660 /var/vpopmail/domains/example1.com/.qmailadmin-limits ls -l /var/vpopmail/domains/example1.com/.qmailadmin-limits

 -rw-rw----    1 vpopmail vchkpw          0 Jan  6 17:41 /var/vpopmail/domains/example1.com/.qmailadmin-limits

In diese Datei können nun Limits eingetragen werden:

 maxpopaccounts          X = maximale Anzahl POP3-Accounts
 maxaliases              X = maximale Anzahl Aliasse
 maxforwards             X = maximale Anzahl Forwarders
 maxmailinglists         X = maximale Anzahl Mailinglisten
 maxautoresponders       X = maximala Anzahl Autoresponder

Zusätzlich können noch Services deaktiviert werden (default = aktiviert):

 disable_pop = PHP3-Zugriff deaktivieren
 disable_imap = IMAP-Zugriff deaktivieren
 disable_external_relay = SMTP-Relay-Zugriff deaktivieren
 disable_webmail = Webmail deaktivieren
 disable_dialup = Dialup-Verbindung deaktivieren
 disable_password_changing = Passwort-Änderung deaktivieren

Beispiel einer .qmailadmin-limits:

cat /var/vpopmail/domains/example1.com/.qmailadmin-limits

 maxpopaccounts          5
 maxaliases              20
 maxforwards             20
 maxmailinglists         1
 maxautoresponders       5
 disable_imap
 disable_webmail
 disable_dialup
 disable_password_changing

Versucht der postmaster-Benutzer ein Limit zu überschreiten, bekommt er eine Fehlermeldung:

 Die maximale Anzahl POP Accounts wurde erreicht. 5
  • vQadmin

vQadmin ist ein Web-Interface zur Verwaltung von virtuellen qmail-Domains. Funktionen: - Domainverwaltung (hinzufügen, löschen) - Ändern von Benutzerpasswörtern / Quotas - Aktivieren / Deaktivieren von POP3-Zugriff - Kontrolle des SMTP-Relay - Zugriff auf Courier-IMAP und Sqwebmail

vQadmin und QmailAdmin können zusammen betrieben werden: QmailAdmin kann von Benutzern genutzt werden um eigene Domains zu administrieren, es können aber keine neuen Domains erstellt werden. vQadmin wird vom Administrator benutzt um die Domains zu verwalten. Installation des Source-Pakets:

wget http://www.inter7.com/vqadmin/vqadmin-2.3.2.tar.gz tar xvfz vqadmin-2.3.2.tar.gz ./configure --enable-cgibindir=/home/www/htdocs/cgi-bin --prefix=/usr

Anmerkung: Das Debian Standardverzeichnis fuer cgibindir ist /usr/lib/cgi-bin. Das configure-Script zeigt die Einstellungen:

           Current settings

vpopmail directory = /var/vpopmail

              uid = 89
              gid = 89
      cgi-bin dir = /home/www/htdocs/cgi-bin
      vqadmin dir = /home/www/htdocs/cgi-bin/vqadmin

Kompilieren:

make

Installieren:

make install-strip

Es werden die entsprechenden Verzeichnisse und Dateien angelegt:

ls -l /home/www/htdocs/cgi-bin/vqadmin/

 drwxr-xr-x    2 vpopmail vchkpw       4096 Mar  8 20:07 html
 -rw-r--r--    1 vpopmail vchkpw        864 Mar  8 20:07 vqadmin.acl
 -rwsr-sr-x    1 root     root        62120 Mar  8 20:07 vqadmin.cgi

Nach der Installation sollte die ACL-Datei (Benutzer-Kontrollliste) editiert werden:

cat /home/www/htdocs/cgi-bin/vqadmin/vqadmin.acl

 #
 # Access List Definitions
 # vol@inter7.com
 #
 #
 # Default group contains permissions for all users
 # not listed under any groups
 #
 # If the default group is not defined, users not
 # listed under any other groups will have no
 # permissions.
 #
 # Examples follow...
 #
 #default - ...
 #
 # Access permissions:
 #
 # V View user information
 # I View domain information
 # M Modify user information
 # U Modify domain information
 # C Create user
 # A Create domain
 # D Delete user
 # X Delete domain
 #
 # These features will still appear in the HTML templates
 # if the user doesn't have access to them, however, they will
 # get a permission denied error if they try to make use of
 # them.
 #
 #tech VI tech1user
 #admin VIMUDCA admin1user
 #
 # An asterisk in the features field specifies that you
 # want all users in this group to have access to
 # all features.
 #
 senior * admin

In diesem Beispiel wird nur der Benutzer admin mit allen Rechten (*) zugelassen. Zudem muss in der Apache-Konfiguration (/etc/apache/httpd.conf) im Bereich der Directory-Einträge folgender Eintrag hinzugefügt werden:

 #vqadmin
 <Directory "/home/www/htdocs/cgi-bin/vqadmin">
     deny from all
     Options ExecCGI
     AllowOverride AuthConfig
     Order deny,allow
 </Directory>

Anmerkung: Das Debian Standardverzeichnis ist /usr/lib/cgi-bin/vqadmin. Die bereits vorhandene /home/www/htdocs/cgi-bin/vqadmin/.htpasswd wird angepasst (die passwd-Dateien sollten in einem sicherem Verzeichnis liegen):

 AuthType Basic
 AuthUserFile /etc/apache/passwd/vqadmin.passwd
 AuthName vQadmin
 require valid-user
 satisfy any

Die passwd-Datei mit den Benutzerinformationen wird erstellt:

htpasswd -c /etc/apache/passwd/vqadmin.passwd admin

 New password: 
 Re-type new password: 
 Adding password for user admin

Nach einem Apache reload oder restart (/etc/init.d/apache restart) kann das CGI-Script /home/www/htdocs/cgi-bin/vqadmin/vqadmin.cgi im Webbrowser aufgerufen werden, Benutzername und Passwort werden abgefragt. Wenn beim Zugriff auf bestimmte (alle) Funktionen Fehlermeldungen wie z.B.

List Domains: Permission denied

erscheinen, müssen die Benutzerrechte in der ACL-Datei angepasst werden:

 admin VIMUCADX admin

go to top of page10. qmail und Zusatzprogramme testen

  • SMTP-Test

Eine eMail direkt vom SMTP-Server verschicken:

telnet mailexchanger 25 HELO MAIL From: RCPT To: DATA Header: (leerzeile) (body) . QUIT

Ist die RCPT To - Domain keine lokale (virtuelle) Domain und der Benutzer ist nicht am SMTP-Server authentifiziert (SMTP-AUTH / SMTP-after-POP) wird die eMail abgelehnt.

  • Zugriff auf den Mailserver mit beliebigem Mail User Agent (Idee von Thomas Creutz)

Ob der Zugriff auf den Mailserver funktioniert kann man mit einem beliebigen Mail User Agent (MUA) testen. Die Mozilla-Suite enthält einen Mail-Client mit dem die Tests durchgeführt werden können. Wichtig dabei ist das beim Login als Benutzername user@domain.tld angegeben wird.

  • Weitere Tests

Weitere Tests von qmail und den Zusatzprogrammen sind noch offen. Ideen bitte an fbn@thelogic.org.

go to top of page11. Fehlersuche und Hilfe

  • Logfiles

Die qmail-Logfiles liegen im Verzeichnis /var/log/sv :

ls -l /var/log/sv

 drwxr-x---    2 qmaill   root         4096 Mar 16 20:42 qmail
 drwxr-x---    2 qmaill   root         4096 Mar 15 20:56 qmail-pop3
 drwxr-x---    2 qmaill   root         4096 Mar 15 20:56 qmail-smtp

Jeder qmail-Dienst hat ein eigenes current-Logfile in dem die aktuellen Informationen im TAI64N-Format gespeichert werden:

tail /var/log/sv/qmail/current

 @400000003e74d352166e2254 new msg 563400
 @400000003e74d352166e2e0c info msg 563400: bytes 1206 from  qp 1961 uid 64010
 @400000003e74d35216ab2384 starting delivery 18: msg 563400 to local admin@mailserver
 @400000003e74d35216ab3324 status: local 2/10 remote 0/20
 @400000003e74d35216ab370c delivery 17: success: did_0+1+0/qp_1961/
 @400000003e74d35216ab3edc status: local 1/10 remote 0/20
 @400000003e74d35216ab46ac end msg 563398

tail /var/log/sv/qmail-pop3/current

 @400000003e74c18405aef6b4 tcpserver: status: 0/40
 @400000003e74d07c29d2e2e4 tcpserver: status: 1/40
 @400000003e74d07c29d45214 tcpserver: pid 1939 from 192.168.1.99
 @400000003e74d07c2b79f394 tcpserver: ok 1939 mailserver:192.168.1.21:110 :192.168.1.99::36357
 @400000003e74d07c368f4324 tcpserver: end 1939 status 256
 @400000003e74d07c368f52c4 tcpserver: status: 0/40

tail /var/log/sv/qmail-smtp/current

 @400000003e74d04a1874a0b4 tcpserver: status: 0/40
 @400000003e74d0772b8d874c tcpserver: status: 1/40
 @400000003e74d0772b90948c tcpserver: pid 1935 from 192.168.1.99
 @400000003e74d0772bb4ed3c tcpserver: ok 1935 example1.com:192.168.1.21:25 :192.168.1.99::36356
 @400000003e74d077380ddc74 tcpserver: end 1935 status 0
 @400000003e74d077380dec14 tcpserver: status: 0/40

Um lesbare Datums- und Zeitangaben zu bekommen wird das Programm tai64nlocal benutzt:

tail /var/log/sv/qmail/current | tai64nlocal

 2003-03-16 20:40:56.376316500 new msg 563400
 2003-03-16 20:40:56.376319500 info msg 563400: bytes 1206 from  qp 1961 uid 64010
 2003-03-16 20:40:56.380314500 starting delivery 18: msg 563400 to local admin@mailserver
 2003-03-16 20:40:56.380318500 status: local 2/10 remote 0/20
 2003-03-16 20:40:56.380319500 delivery 17: success: did_0+1+0/qp_1961/
 2003-03-16 20:40:56.380321500 status: local 1/10 remote 0/20
 2003-03-16 20:40:56.380323500 end msg 563398
  • System-Prozesse

Wenn qmail gestartet ist sollten folgende Prozesse auf dem System aktiv sein:

ps aux | grep qmail

 root       184  0.0  0.0  1240  288 ?        S    18:27   0:00 supervise qmail
 root       186  0.0  0.0  1240  288 ?        S    18:27   0:00 supervise qmail-smtp
 root       188  0.0  0.0  1240  288 ?        S    18:27   0:00 supervise qmail-pop3
 qmails    1291  0.0  0.0  1296  376 ?        S    19:24   0:00 qmail-send
 root      1292  0.0  0.0  1252  308 ?        S    19:24   0:00 qmail-lspawn ./Maildir/
 qmailr    1293  0.0  0.0  1248  320 ?        S    19:24   0:00 qmail-rspawn
 qmailq    1294  0.0  0.0  1244  324 ?        S    19:24   0:00 qmail-clean
 qmaill    1296  0.0  0.0  1252  280 ?        S    19:24   0:00 multilog t ./main
 root      1299  0.0  0.0  1308  492 ?        S    19:24   0:00 /usr/bin/tcpserver -HRDv -x /etc/tcp.pop3.cdb 0.0.0.0 pop-3 /usr/sbin/qmail-popup mailserver /var/vpopmail/bin/vchkpw /usr/sbin/qmail-pop3d Maildir
 qmaill    1303  0.0  0.0  1252  280 ?        S    19:24   0:00 multilog t ./main
 vpopmail  1306  0.0  0.0  1308  504 ?        S    19:24   0:00 /usr/bin/tcpserver -UHRDv -x /etc/tcp.smtp.cdb -u 89 -g 89 0.0.0.0 smtp /usr/sbin/qmail-smtpd mailserver /var/vpopmail/bin/vchkpw /bin/true
 qmaill    1308  0.0  0.0  1252  280 ?        S    19:24   0:00 multilog t ./main
  • Mailing-Listen

Sehr gute Hilfe zu qmail und den Zusatzprogrammen gibt es auf den jeweiligen Mailing-Listen: - qmail: http://cr.yp.to/lists.html#qmail - inter7-Programme: http://inter7.com

go to top of page12. Mail-Filter mit procmail

Mail-Filterung mit procmail wird fuer den virtuellen Benutzer testuser1@example1.com eingerichtet.

  • Installation von procmail

Das Paket procmail wurde unter 3. Vorbereitung: Installation der benötigten Debian-Pakete bereits installiert.

  • .qmail-Datei anpassen

Damit die eingehenden Mails mit procmail gefiltert werden muss die benutzerspezifische .qmail-Datei /var/vpopmail/domains/example1.com/.qmail-testuser1 angepasst werden:

| /usr/bin/procmail -m -t ./testuser1/Maildir/procmailrc

Wenn die Datei noch nicht vorhanden war müssen die Rechte angepasst werden:

cd /var/vpopmail/domains/example1.com chown vpopmail.vchkpw .qmail-testuser1; chmod 600 .qmail-testuser1

  • Neue procmail-Dateien anlegen

In der procmailrc-Datei werden die Filter definiert. Zudem wird angegeben wo procmail die Mails ablegen soll. Anlegen der Beispieldatei /var/vpopmail/domains/example1.com/testuser1/Maildir/procmailrc:

SHELL=/bin/sh PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin MAILDIR=/var/vpopmail/domains/example1.com/testuser1/Maildir/ LOGFILE=$MAILDIR/procmail.log LOGABSTRACT="all" VERBOSE="on"

0:
  • ^Subject: test1

.test1/

0:
  • ^Subject: test2

.test2/

0:

$MAILDIR

Den Parameter VERBOSE sollte man im Normalbetrieb auf off setzen damit nicht zu viele Informationen ins procmail-Logfile geschrieben werden. In der Beispieldatei sind zwei Filter definiert: Mails mit dem Betreff test1 werden in den Mailordner test1 gespeichert, Mails mit dem Betreff test2 in den Mailordner test2. Falls keiner der Filterregeln auf eine eingehende Mail zutrifft wird mit der letzten Regel die Mail in die Inbox im Mailverzeichnis gespeichert. Diese Regel sollte immer am Ende der procmailrc-Datei stehen. Zusätzlich wird die Logdatei für procmail angelegt und die Rechte auf die procmail-Dateien gesetzt:

touch /var/vpopmail/domains/example1.com/testuser1/Maildir/procmail.log chown vpopmail.vchkpw /var/vpopmail/domains/example1.com/testuser1/Maildir/procmail*

  • Mailordner im Mailverzeichnis anlegen

Um die Filter von procmail zu testen werden die zwei Mailordner test1 und test2 im Mailverzeichnis angelegt. Achtung: Normalerweise werden Mailordner mit dem Mail User Agent (Mailclient) angelegt.

cd /var/vpopmail/domains/example1.com/testuser1/Maildir mkdir .test1 .test1/cur .test1/new .test1/tmp; chown -R vpopmail.vchkpw .test1; chmod -R 700 .test1 mkdir .test2 .test2/cur .test2/new .test2/tmp; chown -R vpopmail.vchkpw .test2; chmod -R 700 .test2

  • Testen der Filterregeln

Als Test werden zwei Mails mit dem Betreff "test1" und "test2" an den Benutzer testuser1@example1.com verschickt:

mailx -s test1 testuser1@example1.com < /dev/null mailx -s test2 testuser1@example1.com < /dev/null

Ob procmail richtig filtert sieht man in der procmail-Logdatei und am Speicherort der Maildateien:

cat /var/vpopmail/domains/example1.com/testuser1/Maildir/procmail.log

 procmail: [12665] Sun Oct 19 14:14:56 2003
 procmail: Match on "^Subject: test1"
 procmail: Locking ".test1/.lock"
 procmail: [12665] Sun Oct 19 14:14:57 2003
 procmail: Assigning "LASTFOLDER=.test1/new/1066565696.12665_1.mailserver"
 procmail: Unlocking ".test1/.lock"
  Subject: test1
   Folder: .test1/new/1066565696.12665_1.mailserver                             387
 procmail: [12680] Sun Oct 19 14:15:24 2003
 procmail: No match on "^Subject: test1"
 procmail: Match on "^Subject: test2"
 procmail: Locking ".test2/.lock"
 procmail: Assigning "LASTFOLDER=.test2/new/1066565724.12680_1.mailserver"
 procmail: Unlocking ".test2/.lock"
  Subject: test2
   Folder: .test2/new/1066565724.12680_1.mailserver                             387


ls -laR /var/vpopmail/domains/example1.com/testuser1/Maildir/.test*

 .test1/new:
 total 12
 drwx------    2 vpopmail vchkpw       4096 2003-10-19 13:12 .
 drwx------    5 vpopmail vchkpw       4096 2003-10-19 13:12 ..
 -rw-------    1 vpopmail vchkpw        207 2003-10-19 13:12 1066561968.11433_1.mailserver
 .test2/new:
 total 12
 drwx------    2 vpopmail vchkpw       4096 2003-10-19 13:13 .
 drwx------    5 vpopmail vchkpw       4096 2003-10-19 13:13 ..
 -rw-------    1 vpopmail vchkpw        207 2003-10-19 13:13 1066561982.11439_1.mailserver
  • Offene Punkte

- Wie kann ein Benutzer seine .qmail-Datei und die procmail-Dateien editieren? - Wie wird procmail systemweit für alle Benutzerkonten eingebunden?

go to top of page13. Spam-Filter mit Spamassassin

Spam-Filterung mit Spamassassin wird für den virtuellen Benutzer testuser1@example1.com eingerichtet.

  • Installation von spamassassin:

apt-get install spamassassin dpkg -la | grep spamassassin

 ii  spamassassin   2.60-1         Perl-based spam filter using text analysis
  • Konfiguration von Spamassassin:

Spamassassin wird über die Datei /etc/spamassassin/local.cf konfiguriert:

cat /etc/spamassassin/local.cf

 report_header 1
 required_hits           5.0
 rewrite_subject         1
 subject_tag             *****SPAM*****
 report_safe             2
 use_terse_report        0
 use_bayes               1
 auto_learn              1
 skip_rbl_checks         0
 use_razor2              1
 use_dcc                 1
 use_pyzor               1
 ok_languages            all
 ok_locales              all
  • Aktivieren von Spamassassin über die .qmail-Datei

Damit die eingehenden Mails mit Spamassassin auf Spam geprüft werden muss die benutzerspezifische .qmail-Datei /var/vpopmail/domains/example1.com/.qmail-testuser1 angepasst werden:

| /usr/bin/spamassassin -P | /usr/bin/procmail -m -t ./testuser1/Maildir/procmailrc

Spamassassin kann auch ohne procmail benutzt werden:

| /usr/bin/spamassassin -P | /var/vpopmail/domains/pinpimps.de/schnucki/Maildir/

  • Aktivieren von Spamassassin über die procmailrc-Datei

Alternativ zur .qmail-Datei kann man das Prüfen der Mails auf Spam auch direkt in der procmailrc-Datei aktivieren:

  1. SpamAssassin
0fw

| spamassassin -P

Diese Regel sollte als erste Regel in der procmailrc-Datei definiert werden damit die Mails vor dem Verteilen in Mailordner auf Spam geprüft werden.

  • Filterung von Spam-Mails

Mails die durch Spamassassin als Spam-Mail klassifiziert wurden können im Mail User Agent oder direkt auf dem Mailserver durch procmail gefiltert werden. Durch folgenden Eintrag in die procmailrc werden Spam-Mails in den Mailordner spam verschoben:

 :0:
 * ^X-Spam-Flag: YES
 .spam/
  • Mailordner im Mailverzeichnis anlegen

Um die Filterung von Spam-Mails zu testen wird der Mailordner spam im Mailverzeichnis angelegt. Achtung: Normalerweise werden Mailordner mit dem Mail User Agent (Mailclient) angelegt.

cd /var/vpopmail/domains/example1.com/testuser1/Maildir mkdir .spam .spam/cur .spam/new .spam/tmp; chown -R vpopmail.vchkpw .spam; chmod -R 700 .spam

  • Testen der Spam-Filterung

Als Test wird eine Spam-Mail aus dem Spamassassin-Paket an den Benutzer testuser1@example1.com verschickt:

mailx -s spamtest testuser1@example1.com < /usr/share/doc/spamassassin/sample-spam.txt

Ob die Spam-Mail richtig gefiltert wird sieht man wieder in der procmail-Logdatei und am Speicherort der Maildateien:

cat /var/vpopmail/domains/example1.com/testuser1/Maildir/procmail.log

 procmail: [12609] Sun Oct 19 14:11:59 2003
 procmail: Match on "^X-Spam-Flag: YES"
 procmail: Locking ".spam/.lock"
 procmail: Assigning "LASTFOLDER=.spam/new/1066565519.12609_1.mailserver"
 procmail: Unlocking ".spam/.lock"
  Subject: *****SPAM***** spamtest
   Folder: .spam/new/1066565519.12609_1.mailserver                             2992


ls -laR /var/vpopmail/domains/example1.com/testuser1/Maildir/.spam*

 .spam/new:
 total 12
 drwx------    2 vpopmail vchkpw       4096 2003-10-19 14:11 .
 drwx------    5 vpopmail vchkpw       4096 2003-10-19 14:11 ..
 -rw-------    1 vpopmail vchkpw       2992 2003-10-19 14:11 1066565519.12609_1.mailserver
  • Offene Punkte

- Wie kann ein Benutzer Spam-Filterung für seinen Account de- und aktivieren? - Wie kann Spamassassin systemweit für alle Benutzerkonten eingebunden werden?

go to top of page14. Virenscanner mit OdeiaVir

  • Situation zu Virenscannern unter Linux

Da es zur Zeit (Oktober 2003) noch keinen freien (und fertig gestellten) Virenscanner für Linux gibt wird hier keine Installation und Konfiguration beschrieben. Für den privaten Gebrauch können verschiedene Virenscanner wie z.B. F-Prot auf den Arbeitsplätzen eingesetzt werden.

  • Einbindung verschiedener Virenscanner mit ODEiAVIR

ODEiAVIR selbst ist kein Virenscanner, ODEiAVIR ist ein Programm/Wrapper das einen Virenscanner nach Wahl in einen Mailserver integriert um eingehende Mails auf Viren zu prüfen.

  • Kommerzielle Virenscanner unter Linux

Es gibt verschiedene kommerzielle Virenscanner die im Zusammenhang mit qmail und ODEiAVIR eingesetzt werden können, z.B.: - F-Prot - McAfee VirusScan - Sophos AntiVirus

  • Open Source Software Virenscanner

Die Webseite OpenAntivirus.org behandelt freie Virenscanner und AntiViren-Lösungen für Linux. Im aktuellen Status werden die Programme allerdings nur zu Test- und Entwicklungszwecken empfohlen.

go to top of page15. Abschlussbemerkungen und Changelog

  • Bemerkungen zu diesem Dokument

Diese Anleitung ist Anfang 2003 entstanden als ich meinen Webserver aufgesetzt habe. Inzwischen gibt es wahrscheinlich schon neuere Pakete und Softwareversionen als die hier beschriebenen. Wenn jemand Lust hat kann er das Dokument updaten :) Die Informationen und Angaben sind mehr oder weniger getestet, trotzdem kann es natürlich vorkommen das etwas anders oder gar nicht funktioniert. In so einem Fall bitte Info an mich dann werde ich die entsprechenden Stellen verbessern.

  • Anmerkungen, Verbesserungen, Vorschläge

Anfragen jeglicher Art können per Mail an fbn@thelogic.org oder per Jabber an fbn@charente.de geschickt werden.

  • Changelog

2003/02/01 - Dokument erstellt, Informationen zu qmail unter Debian gesammelt 2003/03/01 - Version 1.0 fertig gestellt, unstrukturierte Anleitung zur Installation von qmail auf Debian 2003/03/16 - Version 1.1 fertig gestellt, Design per CSS im head-Bereich, neue Gliederung und Struktur 2003/10/19 - Version 1.2 fertig gestellt, Verbesserungen und Fehlerbereinigung, neue Inhalte: Mail-Filter, Spam-Filter, Virenscanner, Abschlussbemerkungen 2003/12/07 - Hinweise und Patch für qmail aus Debian/unstable (Sid) von Florian Holzhauer hinzugefügt 2004/01/24 - Viele Rechtschreibfehler und Inhalte verbessert von Thomas Creutz, Anmerkungen zu verschiedenen Themen und Debian-Standardverzeichnissen von Christian Schmidt und der Linux User Group PUG im Raum Raum Wiesbaden/Mainz.

Persönliche Werkzeuge
MediaWiki Appliance - Powered by TurnKey Linux