Qmail Anleitung
Aus
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
- Tarpit Patch
patch -d qmail-1.03 < debianqmail_patches/01tarpit/tarpit.patch_DEBIAN
patching file qmail-smtpd.c
- 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
- 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):
- set default delivery method
- 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
- alias_empty="./Mailbox" # This uses Mailbox file in users $HOME
- Die Log-Optionen für qmail:
logger="splogger qmail"
- logger="|accustamp >>/var/log/qmail.log" # If you have accustamp installed.
- 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):
- 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)); };
- mail-filter: keine mail-logs nach syslog, mail soll nach mail :)
filter f_syslog { not facility(auth, authpriv, mail); }; filter f_mail { facility(mail); };
- 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:
- !/bin/sh -e
- init.d wrapper script for supervised service:
- Automatically created by svinitd-create
- 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:
- !/bin/bash
- /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:
- !/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:
- !/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:
- 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.