QMAIL-Toaster: Unterschied zwischen den Versionen
(→qmail) |
|||
| Zeile 413: | Zeile 413: | ||
Alte und nicht benötigter Cipher ausschalten | Alte und nicht benötigter Cipher ausschalten | ||
<pre> | <pre> | ||
| − | echo "ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM:-SSLv2:-SSLv3" > /var/qmail/control/tlsserverciphers | + | echo "ALL:\!aNULL:\!ADH:\!eNULL:\!LOW:\!EXP:RC4+RSA:+HIGH:+MEDIUM:-SSLv2:-SSLv3" > /var/qmail/control/tlsserverciphers |
</pre> | </pre> | ||
Version vom 15. Februar 2020, 16:32 Uhr
Dieser Artikel beschreibt die Installation, Konfiguration und Inbetriebnahme eines sogenannten qmail-Toasters, einem modularem qmail-Mailsystem mit vielen Features, für hohe Ansprüche an die Sicherheit und starkem Mailvekehr.
Der Artikel basiert auf Bill's Linux Qmail Toaster von Bill Shupp und Life with qmail von Dave Sill.
Hinweis: Hier werden Bills Ausführungen als eine Art Install-Log wiederholt und um teilweise OS-Spezifische Details ergänzt. Es sollte immer parallel Bill Shupps Original Artikel angeschaut werden, um zu prüfen ob sich durch neue Versionen Dinge verändert haben.
Fragen, Fehler und Anregungen zu diesem Artikel bitte an Benutzer:Dirk
History
| Datum | Von | angepasst/getestet auf OS | Arch | Bemerkung |
| 2006-10-19 | Dirk Schlüter | Fedora Core 4 Linux | x86_64 | Greylisting Patch |
| 2006-05-08 | Dirk Schlüter | Fedora Core 4 Linux | x86_64 | Update auf aktuelle Versionen, x86_64 Spezialitäten |
| 2006-03-24 | Dirk Schlüter | Fedora Core 4 Linux | i386 | 1. Version |
Voraussetzungen
Voraussetzungen prüfen/installieren, gcc, tool, etc. siehe auch http://www.shupp.org/toaster/#prerequisites
yum -y install gcc gcc-c++ gdbm gdbm-devel openssl openssl-devel stunnel yum -y install krb5-devel bzip2 bzip2-devel patch expect expect-devel automake yum -y install autoconf make unzip bind-utils openldap-devel mysql-devel libev-devel lz4-devel patch
Damit die Installationsskripte ungestört arbeiten können, sollte man in der Terminal-Sitzung die Aliase für einige Befehle zurück setzen:
unalias rm mv cp
Installation
DNS prüfen
DNS prüfen und sehen ob die IP-Adresse der Hauptmaildomain mit der des Servers übereinstimmt. Richtige DNS-Konfiguration ist für qmail sehr wichtig.
[root@web1 /]# host -t mx braunschweig-lions.de braunschweig-lions.de mail is handled by 10 mail.braunschweig-lions.de. [root@web1 /]# host -t a braunschweig-lions.de braunschweig-lions.de has address 212.68.65.193
Vorhandenen Mail Server deinstallieren
Bereits installierten Mailserver entfernen, aber zuerst prüfen welcher der Fedora Default-Mailserver installiert ist:
# rpm -qa|grep postfix # rpm -qa|grep exim # rpm -qa|grep sendmail sendmail-8.13.4-2
Den gefundenen Mailserver entsprechend deinstallieren, z.B.:
rpm -ev --nodeps sendmail
Um später bei Updates keine Problem bzgl. der Abhängigkeiten zu sendmail zu haben, empfiehlt es sich nachfolgendes Paket zu installieren, was für korrekte Abhängigkeiten sorgt.
# rpm -ivh http://qmail.jms1.net/fake-smtp-1.0-1.noarch.rpm
Download
Installationsverzeichnis anlegen und Pakete runterladen:
ACHTUNG: Immer nach den aktuellsten Downloadlinks auf http://billslinuxqmail.sourceforge.net/toaster/?page=download schauen!
umask 0022 mkdir -p /var/src/tar cd /var/src/tar # daemontools wget http://qmail.ixip.net/download/daemontools-0.76.tar.gz wget http://qmail.ixip.net/download/daemontools-0.76.errno.patch # qmail wget http://www.rickwidmer.com/software/netqmail-1.06.tar.gz wget http://www.rickwidmer.com/software/toaster-scripts-0.9.2.tar.gz wget http://www.rickwidmer.com/software/libdomainkeys-0.69.tar.gz wget http://www.rickwidmer.com/patches/libdomainkeys-0.69.diff # ucspi-tcp wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz wget http://www.rickwidmer.com/patches/ucspi-tcp-64bit.patch # vpopmail wget http://downloads.sourceforge.net/project/vpopmail/vpopmail-stable/5.4.33/vpopmail-5.4.33.tar.gz wget http://www.rickwidmer.com/patches/qmail-toaster-0.9.2.patch.bz2 wget http://www.rickwidmer.com/patches/submission-0.9.2.patch # If you wish to use courier imap, download this package # Courier wget http://www.rickwidmer.com/software/courier-imap-4.1.2.tar.bz2 wget http://www.rickwidmer.com/software/courier-authlib-0.59.1.tar.bz2 wget http://www.rickwidmer.com/patches/vpopmail_courier_cram-1.diff # If you wish to use dovecot imap, download this package # Dovecot wget http://www.rickwidmer.com/software/dovecot-1.2.14.tar.gz wget http://www.rickwidmer.com/patches/dovecot-1.2.14-conf.patch wget -O dovecot-openssl.1.patch 'http://www.rickwidmer.com/patches/dovecot-openssl.1.patch.php?country=US&state=Idaho&city=Kimberly&orginization=Internet Marketing Specilists&name=www.example.com&email=postmaster@example.com' wget http://www.rickwidmer.com/patches/dovecot-1.2.14.sysv # squirrelmail wget http://www.rickwidmer.com/software/squirrelmail-1.4.21.tar.gz wget http://www.rickwidmer.com/software/quota_usage-1.3.1-1.2.7.tar.gz # autorespond wget http://www.rickwidmer.com/software/autorespond-2.0.4.tar.gz wget http://www.rickwidmer.com/patches/autorespond-2.0.4-2.0.5.patch # ezmlm wget http://cr.yp.to/software/ezmlm-0.53.tar.gz wget http://www.rickwidmer.com/software/ezmlm-idx-0.443.tar.gz # qmailadmin wget https://downloads.sourceforge.net/project/qmailadmin/qmailadmin-devel/qmailadmin-1.2.16.tar.gz wget https://downloads.sourceforge.net/project/qmailadmin/qmailadmin-help/1.0.8/qmailadmin-help-1.0.8.tar.gz # qmailmrtg wget http://www.rickwidmer.com/software/qmailmrtg7-4.2.tar.gz wget http://www.rickwidmer.com/patches/qmailmrtg7-4.2-cfg.patch # ripmime wget http://pldaniels.com/ripmime/ripmime-1.4.0.10.tar.gz wget http://www.rickwidmer.com/patches/ripmime-1.4.0.9-permissions.patch # simscan wget http://www.rickwidmer.com/software/simscan-1.4.0.tar.gz wget http://www.rickwidmer.com/patches/simscan-1.4.0-combined.4.patch wget http://www.rickwidmer.com/software/update-simscan.c cd ../ tar -xzf tar/netqmail-1.06.tar.gz cd netqmail-1.06
Software Installation
daemontools
rpm -Uvh http://repo.openfusion.net/centos7-x86_64//daemontools-0.76-9.of.el7.x86_64.rp mkdir /service mkdir clear touch clear/down cat > clear/run <<EOF #!/bin/sh yes '' | head -4000 | tr '\n' . # When you want to clear the service errors, just run this: # svc -o /service/clear EOF chmod +x clear/run chmod a-w clear/down systemctl enable daemontools systemctl start daemontools
Prüfen ob die daemontools laufen, als Beispiel:
# ps ax|grep svs 24648 ? Ss 0:00 /bin/sh /command/svscanboot 24650 ? S 0:00 svscan /service 5109 pts/0 S+ 0:00 grep svs
ucspi-tcp
cd /var/src/ tar -xzf tar/ucspi-tcp-0.88.tar.gz cd ucspi-tcp-0.88 patch -p1 < /var/src/netqmail-1.06/other-patches/ucspi-tcp-0.88.errno.patch # NOTE: If you are on the x86_64 platform, you need to remove the # "-02" argument to gcc in conf-cc. See this for details # http://marc.theaimsgroup.com/?l=qmail&m=111725518121864&w=2 make make setup check
qmail
mkdir /var/qmail groupadd nofiles useradd -g nofiles -d /var/qmail/alias alias useradd -g nofiles -d /var/qmail qmaild useradd -g nofiles -d /var/qmail qmaill useradd -g nofiles -d /var/qmail qmailp groupadd qmail useradd -g qmail -d /var/qmail qmailq useradd -g qmail -d /var/qmail qmailr useradd -g qmail -d /var/qmail qmails cd /var/src tar -xzf tar/toaster-scripts-0.9.2.tar.gz cd netqmail-1.06 # NOTE: RedHat/Fedora users may need to link certain include files for the TLS patch. # Issue the command below only if make fails: ln -s /usr/kerberos/include/com_err.h /usr/kerberos/include/krb5.h /usr/kerberos/include/profile.h /usr/include/ # as well as remove the sendmail link if it still exists: rm /usr/sbin/sendmail make make setup check # NOTE: qmail will be patched AFTER vpopmail is installed # turn on SPF checking echo 3 > /var/qmail/control/spfbehavior Optional SPF abschalten, da schon mal Probleme damit aufgetaucht sind! echo 0 > /var/qmail/control/spfbehavior # turn on mfcheck echo 1 > /var/qmail/control/mfcheck # E-Mail Adressen entsprechend anpassen! cd ~alias echo "postmaster@braunschweig-lions.de" > .qmail-postmaster echo "server@braunschweig-lions.de" > .qmail-mailer-daemon echo "root@braunschweig-lions.de" > .qmail-root chmod 644 ~alias/.qmail* cd /var/src/netqmail-1.06 # Den vollen Hostnamen entsprechend anpassen! # Hostname ausgeben [root@web1 alias]# hostname web1.braunschweig-lions.de ./config-fast web1.braunschweig-lions.de
qmail-man-pages Pfad in man.config hinzufügen:
vi /vi /etc/man.config ... MANPATH_MAP /opt/sbin /opt/man MANPATH_MAP /var/qmail/bin /var/qmail/man
Qmail konfigurieren:
cd /var/src cp toaster-scripts-0.9.2/rc /var/qmail/rc chmod 755 /var/qmail/rc mkdir /var/log/qmail echo ./Maildir/ >/var/qmail/control/defaultdelivery cp toaster-scripts-0.9.2/qmailctl /var/qmail/bin/ chmod 755 /var/qmail/bin/qmailctl ln -s /var/qmail/bin/qmailctl /usr/bin ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail ln -s /var/qmail/bin/sendmail /usr/lib/sendmail #Now create the supervise directories/scripts for the qmail services: mkdir -p /var/qmail/supervise/qmail-send/log mkdir -p /var/qmail/supervise/qmail-smtpd/log mkdir -p /var/qmail/supervise/qmail-pop3d/log mkdir -p /var/qmail/supervise/qmail-pop3ds/log cp /var/src/toaster-scripts-0.9.2/send.run /var/qmail/supervise/qmail-send/run cp /var/src/toaster-scripts-0.9.2/send.log.run /var/qmail/supervise/qmail-send/log/run cp /var/src/toaster-scripts-0.9.2/smtpd.run /var/qmail/supervise/qmail-smtpd/run cp /var/src/toaster-scripts-0.9.2/smtpd.log.run /var/qmail/supervise/qmail-smtpd/log/run cp /var/src/toaster-scripts-0.9.2/pop3d.run /var/qmail/supervise/qmail-pop3d/run cp /var/src/toaster-scripts-0.9.2/pop3d.log.run /var/qmail/supervise/qmail-pop3d/log/run # NOTE: If you are using stunnel version 4, you should use pop3ds.run.v4 # instead of pop3ds.run below. # Type "stunnel -V" (v. 3) or "stunnel -version" (v. 4) to see what version is installed. # You will also need to copy over stunnel.conf like so: # # cp /var/src/toaster-scripts-0.9.2/stunnel.conf /var/qmail/supervise/qmail-pop3ds/ cp /var/src/toaster-scripts-0.9.2/pop3ds.run /var/qmail/supervise/qmail-pop3ds/run cp /var/src/toaster-scripts-0.9.2/pop3ds.log.run /var/qmail/supervise/qmail-pop3ds/log/run echo 20 > /var/qmail/control/concurrencyincoming chmod 644 /var/qmail/control/concurrencyincoming chmod 755 /var/qmail/supervise/qmail-send/run chmod 755 /var/qmail/supervise/qmail-send/log/run chmod 755 /var/qmail/supervise/qmail-smtpd/run chmod 755 /var/qmail/supervise/qmail-smtpd/log/run chmod 755 /var/qmail/supervise/qmail-pop3d/run chmod 755 /var/qmail/supervise/qmail-pop3d/log/run chmod 755 /var/qmail/supervise/qmail-pop3ds/run chmod 755 /var/qmail/supervise/qmail-pop3ds/log/run mkdir -p /var/log/qmail/smtpd mkdir -p /var/log/qmail/smtpds mkdir -p /var/log/qmail/pop3d mkdir -p /var/log/qmail/pop3ds chown -R qmaill /var/log/qmail # qmail via daemontools starten ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service # 5 sekunden pause machen, um sicherzugehen das qmail gestartet ist und dann prüfen ob es läuft sleep 5 [root@web1 src]# qmailctl stat /service/qmail-send: up (pid 8592) 103 seconds /service/qmail-send/log: up (pid 9043) 14 seconds /service/qmail-smtpd: up (pid 8649) 96 seconds /service/qmail-smtpd/log: up (pid 9044) 14 seconds messages in queue: 0 messages in queue but not yet preprocessed: 0
Domainkeys übersetzen
cd /var/src tar -xzf tar/libdomainkeys-0.69.tar.gz cd libdomainkeys-0.69 patch -p0 < ../tar/libdomainkeys-0.69.diff make
oder
rpm -Uvh http://repo.whitehorsetc.com/7/current/x86_64/libdomainkeys-devel-0.69-1.qt.el7.x86_64.rpm
SMTP/TLS Korrektur
Da SMTP/TLS normalerweise auf Port 465 (beim Standard Toaster auf 25) läuft, passen wir das an.
mkdir -p /var/qmail/supervise/qmail-smtpds/log cp /var/src/toaster-scripts-0.9.2/smtpd.run /var/qmail/supervise/qmail-smtpds/run cp /var/src/toaster-scripts-0.9.2/smtpd.log.run /var/qmail/supervise/qmail-smtpds/log/run chmod 755 /var/qmail/supervise/qmail-smtpds/run chmod 755 /var/qmail/supervise/qmail-smtpds/log/run
Anschließend in /var/qmail/supervise/qmail-smtpds/run die Zeile
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtps \
durch
-u "$QMAILDUID" -g "$NOFILESGID" 0 465 \
ersetzen
In /var/qmail/supervise/qmail-smtps/log/run die Zeile
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t n20 s4999999 /var/log/qmail/smtpd durch exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t n20 s4999999 /var/log/qmail/smtpds
und in /usr/bin/qmailctl die Zeile
svclist="qmail-send qmail-smtpd" durch svclist="qmail-send qmail-smtpd qmail-smtpds"
ersetzen.
Anschließend
ln -s /var/qmail/supervise/qmail-smtpds /service
ausführen.
TLS Cipher anpassen
Alte und nicht benötigter Cipher ausschalten
echo "ALL:\!aNULL:\!ADH:\!eNULL:\!LOW:\!EXP:RC4+RSA:+HIGH:+MEDIUM:-SSLv2:-SSLv3" > /var/qmail/control/tlsserverciphers
Vpopmail
User anlegen
Ggf. existiert bereits ein User mit der uid 89, wenn ja entfernen
userdel postfix
groupadd -g 89 vchkpw useradd -u 89 -g vchkpw vpopmail cd /var/src tar -xzf tar/vpopmail-5.4.33.tar.gz cd vpopmail-5.4.33 #patch -p0 < ../tar/vpopmail-5.4.18-cumulative.patch # NOTE: If you are on the x86_64 platform, you need to set the # CFLAGS compiler environment by prefacing the next command with # "CFLAGS=-fPIC", like so: "CFLAGS=-fPIC ./configure ..."
Bill verwendet keine Option für SMTP after POP. Es macht Sinn diese zu aktivieren, um auch mit vielleicht schon vorhandenen Accounts, die anschliessend importiert werden sollen, kompatibel zu bleiben. Die letzten beiden Optionen ermöglichen dieses.
./configure --enable-logging=v --enable-roaming-users --enable-relay-clear-minutes=15
make
make install-strip
# NOTE: If you are on the x86_64 platform, you need to edit
# cdb/compile to add the -fPIC argument to cc. It should look
# something like this: 'exec gcc -fPIC -02 -c ${1+"$@"}'
# After editing compile, do "make && make install-strip" again.
# see this post for more details
# http://forum.qmailrocks.org/showthread.php?p=12293
Cron-Job für POP after SMTP einrichten:
Mit vi /etc/crontab folgendes in /etc/crontab einfügen:
# vpopmail: clear open-smtp 40 * * * * root /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
weiter gehts mit vpopmail
echo '127.:allow,RELAYCLIENT=""' > ~vpopmail/etc/tcp.smtp (cd ~vpopmail/etc ; tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp) # install the vpopmail start script cp ../toaster-scripts-0.9.2/vpopmailctl /var/qmail/bin/vpopmailctl chmod 755 /var/qmail/bin/vpopmailctl ln -s /var/qmail/bin/vpopmailctl /usr/bin # add qmail toaster patch now that vpopmail is installed cd /var/src/netqmail-1.06 bunzip2 -c ../tar/qmail-toaster-0.9.2.patch.bz2 | patch -p0 make clean make qmailctl stop make setup check # NOTE: the following command needs to be run after any future # re-installs of qmail as it will chown this directory back to qmail chown -R vpopmail:vchkpw /var/qmail/spam
Zertifikate für SSL erzeugen
make cert # Daten entsprechend eintragen make tmprsadh # Hinweis: Dieser Vorgang dauert einige Zeit.
Mit vi /etc/crontab in /etc/crontab eine Eintragung machen, damit die Keys jede Nacht aktualisiert werden. Nach der letzten Zeile muss ein Zeilenumbruch folgen:
# Added by Dirk for qmail, 2006-03-24 01 01 * * * /var/qmail/bin/update_tmprsadh > /dev/null 2>&1
qmail starten, vpopmail mit daemontools starten und überprüfen ob alles rennt:
qmailctl start #allow daemontools to start vpopmail ln -s /var/qmail/supervise/qmail-pop3d /var/qmail/supervise/qmail-pop3ds /service sleep 5 vpopmailctl stat # sieht ungefähr so aus: > /service/qmail-pop3d: up (pid 8701) 1498 seconds > /service/qmail-pop3d/log: up (pid 9042) 1424 seconds > /service/qmail-pop3ds: up (pid 8756) 1488 seconds > /service/qmail-pop3ds/log: up (pid 9041) 1425 seconds qmailctl stat # sieht ungefähr so aus: > /service/qmail-send: up (pid 14282) 127 seconds > /service/qmail-send/log: up (pid 9043) 1506 seconds > /service/qmail-smtpd: up (pid 14285) 127 seconds > /service/qmail-smtpd/log: up (pid 9044) 1506 seconds > messages in queue: 0 > messages in queue but not yet preprocessed: 0
Nachträgliches ändern des Zertifikates für den Mailversand (SMTP)
Um ein Zertifikat zu ändern oder zu erneuern kann folgendes ausgeführt werden:
cd /var/qmail/control mv servercert.pem servercert_old.pem rm clientcert.pem cd /var/src/netqmail-1.06-mit-greylisting make cert # Abfragen beantworten
Das Zertifikat ist im Anschluss sofort gültig, der Mailserver muss nicht neu gestartet werden.
Quota Support einbauen
cd /var/src/tar/vpopmail-5.4.33/vusaged ./configure
make cp -f vusaged /home/vpopmail/bin cp -f etc/vusaged.conf /home/vpopmail/etc
ZWISCHENDURCH: Security-Check auf Offens-Relay von externem Rechner
HINWEIS: Sollte der Server die SMTP-Verbindung sofort wieder beenden, mal in /var/log/qmail/smtpd/current schauen. Findet sich dort folgende Fehlermeldung. Aufgetreten auf FC4/x86_64:
/var/qmail/bin/qmail-smtpd: error while loading shared libraries: libc.so.6: failed to map segment from shared object: Cannot allocate memory
und/oder
/var/qmail/bin/qmail-smtpd: error while loading shared libraries: libkrb5support.so.0: failed to map segment from shared object: Cannot allocate memory
dann muss das softlimit in /var/qmail/supervise/qmail-smtpd/run erhöht werden, z.B. von 8000000 auf 80000000.
Mit telnet wird geprüft ob man den Server als offenes Relay benutzen kann. Kommen die 553-Fehlermeldungen ist alles OK.
[dirk@wizard ~]$ telnet web1.braunschweig-lions.de 25 Trying 212.68.65.193... Connected to web1.braunschweig-lions.de (212.68.65.193). Escape character is '^]'. 220 web1.braunschweig-lions.de ESMTP helo dirk 250 web1.braunschweig-lions.de mail from:dirk@schlicker.org 250 ok rcpt to:schlueter@link-innovation.de 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.5.3 - chkuser) quit 221 web1.braunschweig-lions.de Connection closed by foreign host.
2. Check
[dirk@wizard ~]$ telnet web1.braunschweig-lions.de 25 Trying 212.68.65.193... Connected to web1.braunschweig-lions.de (212.68.65.193). Escape character is '^]'. 220 web1.braunschweig-lions.de ESMTP helo dirk 250 web1.braunschweig-lions.de mail from:postmaster@braunschweig-lions.de 250 ok rcpt to:schlueter@link-innovation.de 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.5.3 - chkuser) quit 221 web1.braunschweig-lions.de Connection closed by foreign host.
IMAP
Courier-IMAP
Courier's Auth Library:
cd /var/src tar -xjf tar/courier-authlib-0.59.1.tar.bz2 cd courier-authlib-0.59.1 patch -p0 < ../tar/vpopmail_courier_cram-1.diff ./configure --with-redhat # NOTE: RedHat/Fedora users need to add "--with-redhat" make make install-strip make install-configure cp courier-authlib.sysvinit /etc/init.d/courier-authlib chmod 755 /etc/init.d/courier-authlib chkconfig courier-authlib on
/usr/local/etc/authlib/authdaemonrc editieren:
Change authmodulelist="..." to authmodulelist="authvchkpw"
Authlib's Authdaemon Server starten:
/etc/init.d/courier-authlib start
Courier-IMAP installieren:
cd /var/src tar -xjf tar/courier-imap-4.1.2.tar.bz2 cd courier-imap-4.1.2 # build as vpopmail chown -R vpopmail:vchkpw ../courier-imap-4.1.2 su vpopmail umask 0022 # configure may take some time... ./configure --with-redhat # NOTE: RedHat/Fedora users need to add '--with-redhat' make exit make install-strip make install-configure cp courier-imap.sysvinit /etc/init.d/courier-imap chmod 755 /etc/init.d/courier-imap chkconfig courier-imap on
Konfigurieren:
/usr/lib/courier-imap/etc/imapd editieren:
Change 'IMAPDSTART=NO' to 'IMAPDSTART=YES' add " AUTH=CRAM-MD5" to IMAP_CAPABILITY to enable secure authentication (CRAM-MD5)
/usr/lib/courier-imap/etc/imapd-ssl editieren:
Change 'IMAPDSSLSTART=NO' to 'IMAPDSSLSTART=YES'
Security Wenn der Server mehrere IP-Adressen hat, IMAP nur auf der gewollten Adresse aktivieren
/usr/lib/courier-imap/etc/imapd editieren:
Change 'ADDRESS=0' to 'ADDRESS=<IPADDR>'
/usr/lib/courier-imap/etc/imapd-ssl editieren:
Change 'SSLADDRESS=0' to 'SSLADDRESS=<IPADDR>'
WICHTIG: Vor dem ersten Start die SSL-Profile editieren damit sie zum Hostnamen passen:
# optional: The first time courier-imap is started, the SSL certificate # is first created using "localhost" as the "common name". # If you want to change this to match your hostname, you can customize # the CN line in /usr/lib/courier-imap/etc/imapd.cnf (and pop3d.cnf of # you choose to use courier's pop3d) so that the common name matches # your server name BEFORE you start the server for the first time
Start IMAP server:
/etc/init.d/courier-imap start
Nachträgliches Ändern des SSL-Zertifikates
cd /usr/lib/courier-imap/share mv imapd.pem imapd.pem.old
Mit vi /usr/lib/courier-imap/etc/imapd.cnf die Datei /usr/lib/courier-imap/etc/imapd.cnf editieren und im Bereich [ req_dn ] die Vorgaben entsprechend ändern, z.B.:
[ req_dn ] C=DE ST=Niedersachsen L=Braunschweig O=Courier Mail Server OU=Mail CN=mail.braunschweig-lions.de emailAddress=postmaster@www.braunschweig-lions.de
SSL-Zertifikat neu erstellen:
./mkimapdcert
WICHTIG: Courier-IMAP IMAP-Account Begrenzung pro IP-Adresse aufheben
Courier-IMAP begrenzt die Anzahl der IMAP-Accounts die von einer IP-Adresse gleichzeitig genutzt werden können.
Per Default steht dieser Wert auf 4 und sollte angepasst werden. Dazu mit vi /usr/lib/courier-imap/etc/imapd die Konfigurationsdatei editieren, nach MAXPERIP suchen und anpassen, z.B.:
##NAME: MAXPERIP:0 # # Maximum number of connections to accept from the same IP address MAXPERIP=50
Die Datei speichern und Courier-IMAP neu starten:
/etc/init.d/courier-imap restart
Dovecot
Als Alternative zu Courier-IMAP kann man auch dovecot installiseren.
cd /var/src/tar wget http://www.dovecot.org/releases/2.2/dovecot-2.2.29.1.tar.gz cd /var/src tar xzf tar/dovecot-2.2.29.1.tar.gz cd dovecot-2.2.29.1 ./configure --prefix=/usr/local/dovecot --with-vpopmail --with-docs --with-ssl --with-ldap --with-mysql --with-zlib --with-bzlib --with-lz4 make make install
Konfiguration
Benutzer und Gruppe anlegen
groupadd dovecot useradd -g dovecot dovecot useradd -g dovecot dovenull
Benötigte Verzeichniss und dir Log-Datei anlegen
mkdir -p /var/run/dovecot mkdir -p /var/log/dovecot touch /var/log/dovecot/dovecot.log chgrp vchkpw /var/log/dovecot/dovecot.log chmod 660 /var/log/dovecot/dovecot.log ln -s /usr/local/dovecot/sbin/dovecot /usr/sbin/dovecot ln -s /usr/local/dovecot/bin/doveadm /usr/bin/doveadm ln -s /usr/local/dovecot/bin/doveconf /usr/sbin/doveconf ln -s /usr/local/dovecot/bin/dsync /usr/sbin/dsync ln -s /usr/local/dovecot/etc/dovecot /etc/dovecot
Konfigurationsbeispiele kopieren
cd /usr/local/dovecot/etc/dovecot cp -rp /usr/local/dovecot/share/doc/dovecot/example-config/* .
MAN-Pages für dovecot anpassen Mit vi /etc/man.config die Datei /etc/man.config öffnen und folgende Zeile entsprechend hinzufügen:
MANPATH /usr/local/dovecot/share/man
local.conf
Da in der Standard-Konfiurationsdatei dovecot.conf am Ende die Zeile !include_try local.conf steht, werden alle Anpassungen nun in der Datei local.conf gemacht. Die entsprechenden Zeilen sollten in den angegebenen Dateien im Verzeichnis conf.d auskommentiert werden.
cd /usr/local/dovecot/etc/dovecot
cat > local.conf << EOF
#--------------------------------------------------------
# dovecot.conf
#--------------------------------------------------------
protocols = imap sieve
base_dir = /var/run/dovecot
#--------------------------------------------------------
# 10.auth.conf
#--------------------------------------------------------
disable_plaintext_auth = yes
auth_mechanisms = plain login cram-md5
#--------------------------------------------------------
# 10-ssl.conf
#--------------------------------------------------------
ssl=yes
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
ssl_cipher_list = DHE-RSA-AES256-SHA:DHE-RSA-AES128 SHA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!CBC:!PSK:!SRP:!DSS:!SSLv2:!RC4
#--------------------------------------------------------
# 10-logging.conf
#--------------------------------------------------------
log_path = /var/log/dovecot/dovecot.log
login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c %k"
#--------------------------------------------------------
# 10-mail.conf
#--------------------------------------------------------
mail_uid = 89
mail_gid = 89
first_valid_uid = 89
last_valid_uid = 89
first_valid_gid = 89
last_valid_gid = 89
mail_plugins = $mail_plugins quota zlib
#--------------------------------------------------------
# 10-master.conf
#--------------------------------------------------------
default_login_user = vpopmail
default_internal_user = vpopmail
service auth {
unix_listener auth-userdb {
mode = 0600
user = vpopmail
group = vchkpw
}
}
#--------------------------------------------------------
# 15-lda.conf
#--------------------------------------------------------
postmaster_address = postmaster@afdb.de
hostname = mail.afdb.de
# the next two to auto create folders
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
protocol lda {
# Space separated list of plugins to load (default is global mail_plugins).
mail_plugins = $mail_plugins sieve quota autocreate
}
#--------------------------------------------------------
# 20-imap.conf
#--------------------------------------------------------
mail_max_userip_connections = 40
protocol imap {
mail_plugins = $mail_plugins imap_zlib
}
#--------------------------------------------------------
# 90-plugin.conf
#--------------------------------------------------------
plugin {
autocreate = Sent
autocreate2 = Drafts
autocreate3 = Junk
autocreate4 = Trash
autocreate5 = Spam
autosubscripe = Sent
autosubscripe2 = Drafts
autosubscripe3 = Junk
autosubscripe4 = Trash
autosubscripe5 = Spam
zlib_save_level = 6
zlib_save = gz
}
#--------------------------------------------------------
# 90-quota.conf
#--------------------------------------------------------
#quota = maildir:User quota
#--------------------------------------------------------
# auth-vpopmail.conf
#--------------------------------------------------------
passdb {
driver = vpopmail
}
userdb {
driver = vpopmail
args = quota_template=quota_rule=*:backend=%q
}
EOF
Anschließend postmaster_address und hostname entsprechend anpassen.
10-auth.conf
Hier wird am Ende folgendes gemacht:
#!include auth-system.conf.ext #!include auth-sql.conf.ext #!include auth-ldap.conf.ext #!include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-vpopmail.conf.ext
Also auth-system wird deaktiviert!
10-ssl.conf
hier die Pfade zu den Zertifikaten auskommentieren, stehen nun in local.conf
#ssl_cert = </etc/ssl/certs/dovecot.pem #ssl_key = </etc/ssl/private/dovecot.pem
Start/Stop-Script
Das init-Skript erzeugen, in dem man den Editor vi öffnen und nachfolgende Zeilen einfügt.
vi etc/init.d/dovecot
#!/bin/bash
#
# /etc/rc.d/init.d/dovecot
#
# Starts the dovecot daemon
#
# chkconfig: - 65 35
# description: Dovecot Imap Server
# processname: dovecot
# config: /usr/local/dovecot/etc/dovecot/dovecot.conf
# pidfile: /var/run/dovecot/master.pid
### BEGIN INIT INFO
# Provides: dovecot
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Should-Start: $remote_fs
# Should-Stop: $remote_fs
# Default-Start:
# Default-Stop: 0 1 2 3 4 5 6
# Short-Description: start and stop Dovecot Imap server
# Description: Dovecot is an IMAP server for Linux/UNIX-like systems,
# written with security primarily in mind. It also contains
# a small POP3 server.
### END INIT INFO
# Source function library.
. /etc/init.d/functions
RETVAL=0
prog="Dovecot Imap"
exec="/usr/local/dovecot/sbin/dovecot"
config="/usr/local/dovecot/etc/dovecot/dovecot.conf"
pidfile="/var/run/dovecot/master.pid"
lockfile="/var/lock/subsys/dovecot"
start() {
[ $UID -eq 0 ] || exit 4
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $prog: "
daemon --pidfile $pidfile $exec $OPTIONS
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $lockfile
echo
}
stop() {
[ $UID -eq 0 ] || exit 4
echo -n $"Stopping $prog: "
killproc -p $pidfile $exec
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $lockfile
echo
}
reload() {
[ $UID -eq 0 ] || exit 4
echo -n $"Reloading $prog: "
killproc -p $pidfile $exec -HUP
RETVAL=$?
echo
}
#
# See how we were called.
#
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
force-reload|restart)
stop
sleep 1
start
RETVAL=$?
;;
condrestart|try-restart)
if [ -f $lockfile ]; then
stop
sleep 3
start
fi
;;
status)
status -p $pidfile $exec
RETVAL=$?
;;
*)
echo $"Usage: $0 {condrestart|try-restart|start|stop|restart|reload|force-reload|status}"
RETVAL=2
[ "$1" = 'usage' ] && RETVAL=0
esac
exit $RETVAL
Anschließend macht man das Skript ausführbar und legt es in den Runleveln an
chmod +x /etc/init.d/dovecot chkconfig dovecot on
Nun könnte man dovecot mit
service dovecot start
starten, aber da sieve noch nicht installiert ist, würde man nur Fehler sehen.
SSL-Zertifikat
Um das SSL-zertifikat für den IMAP-Server dovecot zu erzeugen, wechselt man in das Quell-Verzeichnis und passt dort die Datei dovecat-openssl.cnf entsprechend an.
cd /var/src/dovecot-2.2.13/doc vi dovecot-openssl.cnf
Anschließend passt man den Pfad im Skript mkcert.sh entsprechend an:
vi mkcert.sh
alt:
SSLDIR=${SSLDIR-/etc/ssl}
neu:
SSLDIR=${SSLDIR-/etc/pki/dovecot}
erzeugt die benötigten Verzeichnisse
mkdir -p /etc/pki/dovecot/certs mkdir -p /etc/pki/dovecot/private
und führt anschließend das Skript aus:
sh mkcert.sh
Sollte man bereits im SSLDIR-Pfad Zertifikate für dovecot liegen haben, so sollte man diese vorher woanders hin kopieren oder löschen.
logrotate
Logrotate konfigurieren
cat > /etc/logrotate.d/dovecot << EOF
/var/log/dovecot/*.log {
missingok
notifempty
delaycompress
sharedscripts
postrotate
doveadm log reopen
endscript
}
EOF
TEST
Um sich mal die einstellungen von Dovecot anzuschauen, ist das Tool doveconf gut geeignet.
doveconf|more
Pigeonhole Sieve
Nur für dovecot
cd /var/src/tar wget http://pigeonhole.dovecot.org/releases/2.2/dovecot-2.2-pigeonhole-0.4.3.tar.gz cd /var/src/ tar xzpf tar/dovecot-2.2-pigeonhole-0.4.3.tar.gz cd dovecot-2.2-pigeonhole-0.4.3 # the program has to find the dovecot-config file in/usr/local/dovecot/lib/dovecot/ ./configure --prefix=/usr/local/dovecot-2-2-pigeonhole --with-dovecot=/usr/local/dovecot/lib/dovecot/ make make install
- Konfigurationen kopieren
cp /usr/local/dovecot/share/doc/dovecot/example-config/conf.d/20-managesieve.conf /etc/dovecot/conf.d/ cp /usr/local/dovecot/share/doc/dovecot/example-config/conf.d/90-sieve.conf /etc/dovecot/conf.d/
und anschließend kann man dann Dovecot endgültig starten
service dovecot start
autorespond
cd /var/src tar -xzf tar/autorespond-2.0.4.tar.gz cd autorespond-2.0.4 patch -p1 < ../tar/autorespond-2.0.4-2.0.5.patch make make install
ezmlm-idx
Ezmlm kann mit oder ohne MySQL-Unterstützung gebaut werden, man kann sich nun entscheiden. Bei der MySQL-Unterstützung werden Mailinglisten in einer MySQL-Datenbank gespeichert.
ezmlm-idx OHNE MySQL-Unterstützung
cd /var/src tar -xzf tar/ezmlm-0.53.tar.gz tar -xzf tar/ezmlm-idx-0.443.tar.gz mv -f ezmlm-idx-0.443/* ezmlm-0.53/ cd ezmlm-0.53 patch -p0 < idx.patch make
Möchte man das EZMLM z.B. deutsche Texte enthält, führt man an dieser Stelle folgenden Befehl aus:
make de
make setup
ezmlm-idx MIT MySQL-Unterstützung
Das Paket mysql-devel muss installiert sein:
yum install mysql-devel
cd /var/src tar -xzf tar/ezmlm-0.53.tar.gz tar -xzf tar/ezmlm-idx-0.443.tar.gz mv -f ezmlm-idx-0.443/* ezmlm-0.53/ cd ezmlm-0.53 patch -p0 < idx.patch
Die Datei conf-sub editieren und std gegen mysql austauschen:
mysql Choose a subscription database support. Available supports are: * std (Default) filesystem * mysql MySQL database * pgsql Postgres database
Die Datei sub_mysql/conf-sqlld editieren:
# Diese Zeile: -L/usr/lib/mysql -lmysqlclient -lnsl -lm # gegen diese tauschen: -L/usr/lib/mysql -lmysqlclient -lz # 64bit -L/usr/lib64/mysql -lmysqlclient -lz
Kompilieren und Installieren:
make
Möchte man das EZMLM z.B. deutsche Texte enthält, führt man an dieser Stelle folgenden Befehl aus:
make de
make setup
WICHTIGE Konfigurationen
POP3S / stunnel fixen
Das Supervise-Run-Script von Bill Shupp für den POP3 SSL-Dienst kommt nicht mit stunnel Versionen >4 zurecht, da sich der Aufruf von stunnel verändert hat. Dieses sollte spätestens beim ausführlichen Funktionstest auffallen. Die verwendete Version von stunnel kann wie folgt überprüft werden:
# stunnel -version stunnel 4.08 on i386-redhat-linux-gnu PTHREAD+POLL+IPv4+LIBWRAP with OpenSSL 0.9.7f 22 Mar 2005 (...)
Wenn der POP3S-Dienst nicht funktioniert, findet man in /var/log/qmail/pop3ds/current entsprechende Fehlermeldungen:
2006-03-27 11:37:52.805674500 tcpserver: status: 1/40 2006-03-27 11:37:52.806051500 tcpserver: pid 30432 from 84.133.222.79 2006-03-27 11:37:52.806091500 tcpserver: ok 30432 0:212.68.65.193:995 :84.133.222.79::34515 2006-03-27 11:37:52.813089500 2006.03.27 11:37:52 LOG3[30432:3085924032]: -f: No such file or directory (2) 2006-03-27 11:37:52.813108500 2006-03-27 11:37:52.813122500 Syntax: 2006-03-27 11:37:52.813136500 stunnel [<filename>] | -fd <n> | -help | -version | -sockets 2006-03-27 11:37:52.813151500 <filename> - use specified config file instead of /etc/stunnel/stunnel.conf 2006-03-27 11:37:52.813167500 -fd <n> - read the config file from a file descriptor 2006-03-27 11:37:52.813182500 -help - get config file help 2006-03-27 11:37:52.813252500 -version - display version and defaults 2006-03-27 11:37:52.813267500 -sockets - display default socket options 2006-03-27 11:37:52.813307500 tcpserver: end 30432 status 256 2006-03-27 11:37:52.813322500 tcpserver: status: 0/40
Damit der POP3S-Dienst wie gewünscht funktioniert, sind einige Anpassungen nötig.
stunnel Konfigurationsdatei anlegen
Ab Version 4 benötigt stunnel eine eigene Konfigurationsdatei. Mit vi /var/qmail/supervise/qmail-pop3ds/stunnel.conf eine Datei mit folgendem Inhalt anlegen. Der Hostname web1.braunschweig-lions.de ist dabei mit dem entsprechenden Hostnamen des Servers zu ersetzen. Siehe auch Qmail-Toaster auf Fedora Core Linux#DNS prüfen
# stunnel configuration for pop3s # last update: 2006-03-27 Dirk Schlueter foreground = yes cert = /var/qmail/control/servercert.pem exec = /var/qmail/bin/qmail-popup execargs = /var/qmail/bin/qmail-popup web1.braunschweig-lions.de /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir
POP3S Supervise-Run-Script anpassen
Mit vi /var/qmail/supervise/qmail-pop3ds/run öffnen und folgende Änderungen vornehmen:
ORIGINAL:
#!/bin/sh
VPOPMAILUID=`id -u vpopmail`
VPOPMAILGID=`id -g vpopmail`
exec /usr/local/bin/tcpserver -l 0 -R -H -v \
-u"$VPOPMAILUID" -g"$VPOPMAILGID" 0 995 \
/usr/sbin/stunnel -f -p /var/qmail/control/servercert.pem \
-l /var/qmail/bin/qmail-popup -- qmail-popup `hostname` \
/home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1
GEÄNDERTE VERSION:
#!/bin/sh
VPOPMAILUID=`id -u vpopmail`
VPOPMAILGID=`id -g vpopmail`
exec /usr/local/bin/tcpserver -l 0 -R -H -v \
-u"$VPOPMAILUID" -g"$VPOPMAILGID" 0 995 \
/usr/sbin/stunnel /var/qmail/supervise/qmail-pop3ds/stunnel.conf 2>&1
Wie man sieht wurden die letzten drei Zeilen modifiziert, da die Konfigurations von stunnel ja nun über die neue Konfiguratiosdatei erledigt wird.
Neustart und Funktionstest
Nun muss der Dienst neu gestartet werden und dann POP3S richtig funktionieren:
# vpopmailctl restart Stopping qmail-pop3d: * Stopping qmail-pop3d. Stopping qmail-pop3ds: * Restarting qmail-pop3d. * Restarting qmail-pop3ds.
Nun sollte das Logfile ungefähr so aussehen und die POP3S-Verbindung geklappt haben:
# tail -f /var/log/qmail/pop3ds/current | /usr/local/bin/tai64nlocal 2006-03-27 12:00:31.094113500 tcpserver: status: 1/40 2006-03-27 12:00:31.094133500 tcpserver: pid 30917 from 84.133.222.79 2006-03-27 12:00:31.094147500 tcpserver: ok 30917 0:212.68.65.193:995 :84.133.222.79::50608 2006-03-27 12:00:31.100415500 2006.03.27 12:00:31 LOG5[30917:3086091968]: stunnel 4.08 on i386-redhat-linux-gnu PTHREAD+POLL+IPv4+LIBWRAP with OpenSSL 0.9.7f 22 Mar 2005 2006-03-27 12:00:31.110836500 2006.03.27 12:00:31 LOG5[30917:3086091968]: stunnel connected from 84.133.222.79:50608 2006-03-27 12:00:31.528218500 2006.03.27 12:00:31 LOG5[30917:3086091968]: Connection closed: 83 bytes sent to SSL, 12 bytes sent to socket 2006-03-27 12:00:31.528240500 tcpserver: end 30917 status 0 2006-03-27 12:00:31.528254500 tcpserver: status: 0/40
Funktionstest
DNS-Konfiguration
Um einen vollständigen Test des Qmail-Toasters durchzuführen, muss eine entsprechende DNS-Konfiguration vorgenommen werden. Z.b. eine Subdomain einer vorhandenen Domain auf diesen neu eingerichteten Server zeigen lassen. Also Demonstration soll hier eine Subdomain test.braunschweig-lions.de angelegt werden. Die E-Mail Domain/Adressen haben dann das Format account@test.braunschweig-lions.de. Dieses ermöglicht es Mails im Internet zu versenden und zu empfangen.
Dazu fügt man in der entsprechenden DNS-Zone einen Subdomain-Eintrag plus MX hinzu, beim MX-Eintrag ist darauf zu achten das es ein FQDN sein muss.
(...)
; eigener MX zum testen fuer test.braunschweig-lions.de
test IN A 212.68.65.193
IN MX 10 www.braunschweig-lions.de.
(...)
Nach dem der BIND die Änderungen übernommen hat, sollte man die korrekte DNS-Konfiguration von einem anderen Rechner aus testen:
[dirk@wizard ~]$ dig test.braunschweig-lions.de mx ; <<>> DiG 9.3.1 <<>> test.braunschweig-lions.de mx ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61797 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 1 ;; QUESTION SECTION: ;test.braunschweig-lions.de. IN MX ;; ANSWER SECTION: test.braunschweig-lions.de. 86400 IN MX 10 www.braunschweig-lions.de. ;; AUTHORITY SECTION: braunschweig-lions.de. 86400 IN NS ns3.bcc.de. braunschweig-lions.de. 86400 IN NS ns.braunschweig-lions.de. braunschweig-lions.de. 86400 IN NS ns2.bcc.de. ;; ADDITIONAL SECTION: www.braunschweig-lions.de. 86400 IN A 212.68.65.193 ;; Query time: 299 msec ;; SERVER: 192.168.201.1#53(192.168.201.1) ;; WHEN: Mon Mar 27 10:43:16 2006 ;; MSG SIZE rcvd: 137
Wichtig ist auch der korrekte DNS-Reverse-Lookup, da viele andere Mailserver aus Spam-Schutz-Gründen diesen Check beim Empfang einer Mail durchführen:
[dirk@wizard ~]$ dig -x 212.68.65.193 ; <<>> DiG 9.3.1 <<>> -x 212.68.65.193 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11072 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 2 ;; QUESTION SECTION: ;193.65.68.212.in-addr.arpa. IN PTR ;; ANSWER SECTION: 193.65.68.212.in-addr.arpa. 86400 IN PTR www.braunschweig-lions.de. ;; AUTHORITY SECTION: 65.68.212.in-addr.arpa. 86400 IN NS ns2.bcc.de. 65.68.212.in-addr.arpa. 86400 IN NS ns3.bcc.de. 65.68.212.in-addr.arpa. 86400 IN NS ns4.bcc.de. 65.68.212.in-addr.arpa. 86400 IN NS rns.bcc-ip.net. ;; ADDITIONAL SECTION: ns2.bcc.de. 86370 IN A 212.68.65.2 ns3.bcc.de. 86370 IN A 212.68.88.12 ;; Query time: 642 msec ;; SERVER: 192.168.201.1#53(192.168.201.1) ;; WHEN: Mon Mar 27 10:43:46 2006 ;; MSG SIZE rcvd: 201
SSL-Connection
Um die Verschlüsselung bei den einzelnen Protokollen zu testen, kann man folgende Befehle aufrufen.
POP3S
# for pop: openssl s_client -connect localhost:995
IMAPSSL
openssl s_client -connect localhost:993
SMTP/TLS (STARTTLS)
openssl s_client -crlf -starttls smtp -connect localhost:25
oder bei korrekten Port 465
openssl s_client -crlf -starttls smtp -connect localhost:465
Fehlermeldungen
CONNECTED(00000768) 11128:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:.\ssl\s23_clnt.c:583:
Diese Fehler tritt auf, wenn die Rechte des Server-Zertifikats /var/qmail/control/servercert.pem nicht korrekt sind.
Virtuelle Mail-Domain mit vpopmail anlegen
# /home/vpopmail/bin/vadddomain test.braunschweig-lions.de Please enter password for postmaster: enter password again:
Nun ist die Test-Domain in vpopmail angelegt, was man auch nochmal leicht überprüfen kann:
# /home/vpopmail/bin/vdominfo test.braunschweig-lions.de domain: test.braunschweig-lions.de uid: 89 gid: 89 dir: /home/vpopmail/domains/test.braunschweig-lions.de users: 1
Test-Mailaccount anlegen
# /home/vpopmail/bin/vadduser dirk@test.braunschweig-lions.de Please enter password for dirk@test.braunschweig-lions.de: enter password again:
Mailaccount/Mailserver testen
Nun kann mit einem Mailprogramm die Funktion getestet werden, folgende Daten sind dabei in diesem Beispiel als Mail-Konto einzutragen:
Posteingangsserver (POP3/IMAP/PO3S/IMAPS): test.braunschweig-lions.de Postausgangsserver (SMTP) : test.braunschweig-lions.de Benutzername (POP/IMAP/SMTP-AUTH) : dirk@test.braunschweig-lions.de (Volle E-Mail Adresse) Kennwort : (wie oben festgelegt)
Folgende Core-Tests sollten durchgeführt werden:
- E-Mail von extern an die neue Test-Adresse versenden (dirk@test.braunschweig-lions.de)
- E-Mail von der Test-Adresse an externen Empfänger versenden, z.B. web.de, link-innovation.de etc.
- Die Protokolle POP3, IMAP und SMTP mit und ohne SSL testen
- Die verschiendenen Authentifizierungen (PLAIN, CRAM-MD5...)
- SMTP after POP und SMTP mit Authentifizierung testen
- Server erneut auf offenes Relay überprüfen
z.B. mit http://www.abuse.net/relay.html
Eine Liste der Features die man überprüfen sollte findet sich hier:
qmail-Logfiles beobachten
Hier einige Beispiele wie die Logfiles aussehen sollten.
Logfile beim Empfang einer Mail von Extern:
# tail -f /var/log/qmail/current | /usr/local/bin/tai64nlocal 2006-03-27 07:50:05.411625500 delivery 41: success: 213.252.153.34_accepted_message./Remote_host_said:_250_ok_1143438605_qp_17747/ 2006-03-27 07:50:05.411645500 status: local 0/10 remote 0/20 2006-03-27 07:50:05.411659500 end msg 24841888 2006-03-27 11:06:24.341015500 new msg 24841546 2006-03-27 11:06:24.341032500 info msg 24841546: bytes 23170 from <schlueter@link-innovation.de> qp 29734 uid 89 2006-03-27 11:06:24.354516500 starting delivery 42: msg 24841546 to local test.braunschweig-lions.de-Dirk@test.braunschweig-lions.de 2006-03-27 11:06:24.354539500 status: local 1/10 remote 0/20 2006-03-27 11:06:24.424492500 delivery 42: success: did_0+0+1/ 2006-03-27 11:06:24.424510500 status: local 0/10 remote 0/20 2006-03-27 11:06:24.424525500 end msg 24841546
Logfile beim Antworten auf die eben erhaltene Mail:
# tail -f /var/log/qmail/current | /usr/local/bin/tai64nlocal 2006-03-27 11:08:03.335850500 new msg 24841546 2006-03-27 11:08:03.335868500 info msg 24841546: bytes 775 from <dirk@test.braunschweig-lions.de> qp 29760 uid 89 2006-03-27 11:08:03.347383500 starting delivery 43: msg 24841546 to remote schlueter@link-innovation.de 2006-03-27 11:08:03.347401500 status: local 0/10 remote 1/20 2006-03-27 11:08:05.383630500 delivery 43: success: 82.165.29.69_accepted_message./Remote_host_said:_250_ok_1143450485_qp_21646/ 2006-03-27 11:08:05.383649500 status: local 0/10 remote 0/20 2006-03-27 11:08:05.383664500 end msg 24841546
Den Timestamp kann man zu einem lesbaren Text umwandeln, indem man die Ausgabe durch /usr/local/bin/tai64nlocal "piped", wie oben zu sehen. In /var/log/qmail/smtpd/current kann man den SMTP-Server beobachten.:
2006-03-27 11:06:23.935394500 tcpserver: status: 1/20 2006-03-27 11:06:23.935803500 tcpserver: pid 29733 from 82.165.29.69 2006-03-27 11:06:23.936001500 tcpserver: ok 29733 0:212.68.65.193:25 :82.165.29.69::60367 2006-03-27 11:06:24.248395500 CHKUSER accepted rcpt: from <schlueter@link-innovation.de::> remote <mail.link-innovation.de:unknown:82.165.29.69> rcpt <Dirk@test.braunschweig-lions.de> : found existing recipient 2006-03-27 11:06:24.355042500 tcpserver: end 29733 status 0 2006-03-27 11:06:24.355062500 tcpserver: status: 0/20 2006-03-27 11:08:02.845987500 tcpserver: status: 1/20 2006-03-27 11:08:02.846409500 tcpserver: pid 29759 from 84.133.222.79 2006-03-27 11:08:02.846623500 tcpserver: ok 29759 0:212.68.65.193:25 :84.133.222.79::49670 2006-03-27 11:08:03.048873500 CHKUSER relaying rcpt: from <dirk@test.braunschweig-lions.de::> remote <wizard.home.all:unknown:84.133.222.79> rcpt <schlueter@link-innovation.de> : client allowed to relay 2006-03-27 11:08:03.580541500 tcpserver: end 29759 status 0 2006-03-27 11:08:03.580559500 tcpserver: status: 0/20
So ungefähr wie oben gezeigt sehen die Log-Einträge aus, wenn alles korrekt eingerichtet wurde. Man sollte mit und ohne Mail-Anhänge testen und kann dabei folgende Logfiles ansehen:
/var/log/qmail/*/var/log/maillog
Optionales
Spam- und Virenfilter mit SpamAssassin und ClamAV
ACHTUNG: Zur Zeit gibt es unterschiede in den ClamAV-Paketen bei Fedora Core 4 i386 und x86_64. Zur Zeit (2006-03-27) sind daher unterschiedliche Schritte bei der Installation/Konfiguration nötig. Daher bitte die Architektur beachten. Welche Architektur Installiert ist, kann man mit arch abfragen. cat /etc/issue gibt Informationen zum Betriebssystem aus.
In der heutigen Zeit macht es Sinn einen Mailserver mit Software zur Spam- und Virenabwehr auszurüsten. Die qmail-Quellen von Bill Shupp enthalten bereits den dazu nötigen QMAILQUEUE-Patch, der es erlaubt innerhalb der Mail-Queue einzugreifen.
Siehe dazu auch:
Installation der nötigen RPM-Pakete
i386
yum install clamav clamd clamav-db spamassassin perl-suidperl pcre-devel pcre
X86_64 (Hinweis in der Einleitung beachten)
yum install spamassassin clamav clamd clamav-db perl-suidperl pcre pcre-devel
SpamAssassin
Starten und für den Systemstart konfigurieren:
/etc/init.d/spamassassin start chkconfig spamassassin on
PLUGINS
RelayCountry
SpamAssassin bringt ein Plugin namens RelayCountry mit, mit welchem es möglich wird, die Länder der einzelnen SMTP Relays anhand der GeoIP Information zu bestimmen. Dies dient zum einen der Bayes-Datenbank. Sie bekommt also zusätzliche Informationen und wird künftig selbständig lernen, aus welchen Ländern viel Spam kommt.
yum install geoipupdate-cron geoipupdate-cron6 geoipupdate php-pecl-geoip GeoIP-GeoLite-data-extra GeoIP-GeoLite-data
Danach sollten unter folgende Verzeichnis die GeoIP-DBs enthalten sein
cd /usr/share/GeoIP/ ls -l insgesamt 49004 lrwxrwxrwx 1 root root 16 5. Feb 09:00 GeoIPASNum.dat -> GeoLiteASNum.dat -rw-r--r-- 1 root root 5042249 17. Jan 13:24 GeoIPASNumv6.dat lrwxrwxrwx 1 root root 15 5. Feb 09:00 GeoIPCity.dat -> GeoLiteCity.dat lrwxrwxrwx 1 root root 17 5. Feb 09:00 GeoIPCityv6.dat -> GeoLiteCityv6.dat lrwxrwxrwx 1 root root 18 15. Mai 2015 GeoIP.dat -> GeoLiteCountry.dat -rw-r--r-- 1 root root 1931941 17. Jan 13:23 GeoIPv6.dat -rw-r--r-- 1 root root 4397606 16. Apr 12:05 GeoLiteASNum.dat lrwxrwxrwx 1 root root 16 5. Feb 09:00 GeoLiteASNumv6.dat -> GeoIPASNumv6.dat -rw-r--r-- 1 root root 19061442 16. Apr 12:05 GeoLiteCity.dat -rw-r--r-- 1 root root 18649442 17. Jan 13:26 GeoLiteCityv6.dat -rw-r--r-- 1 root root 1082230 16. Apr 12:05 GeoLiteCountry.dat
Anschließend fügt man folgende Zeile in die Datei /etc/mail/spamassassin/init.pre ein:
loadplugin Mail::SpamAssassin::Plugin::RelayCountry
und legt unter */etc/mail/spamassassin/ eine Konfigurationsdatei namens RelayCountry.cf mit folgenden Inhalt an:
ifplugin Mail::SpamAssassin::Plugin::RelayCountry add_header all Relay-Country _RELAYCOUNTRY_ header RELAYCOUNTRY_BAD X-Relay-Countries =~ /(CN|RU|UA|RO|VN)/ describe RELAYCOUNTRY_BAD Relayed through spammy country at some point score RELAYCOUNTRY_BAD 2.0 header RELAYCOUNTRY_GOOD X-Relay-Countries =~ /^(DE|AT|CH)/ describe RELAYCOUNTRY_GOOD First untrusted GW is DE, AT or CH score RELAYCOUNTRY_GOOD -0.5 endif # Mail::SpamAssassin::Plugin::RelayCountry
Anschließend führt man folgende Befehle aus:
sa-update service spamassassin restart
eXtremSHOk
Ein weiteres gutes SpamAssassin Plugin ist eXtremeSHOK, welches die „From“ und „Reply-To“ Header vergleicht. Gibt es dort Unterschiede, bekommt die Mail direkt ein paar Punkte. Je nachdem, ob sich auch die Domain unterscheidet, sind es zwei bzw. direkt fünf Punkte.
cd /usr/local/src wget https://github.com/extremeshok/spamassassin-extremeshok_fromreplyto/archive/1.5.tar.gz tar -zxvf 1.5.tar.gz mkdir /etc/mail/spamassassin/plugins/ cp spamassassin-extremeshok_fromreplyto-1.5/plugins/* /etc/mail/spamassassin/plugins/ cp spamassassin-extremeshok_fromreplyto-1.5/01_extremeshok_fromreplyto.cf /etc/mail/spamassassin
https://www.syn-flut.de/spamassassin-erkennungsrate-deutlich-verbessern
Probleme
Häufig hilft es, bevor man lange nach der Fehlerursache im Qmail-Scanner zu suchen, einfach zuerst Spamassassin upzudaten.
sa-update /etc/init.d/spamassassin restart
Meisten tritt so ein Problem auf, wenn eine neue Version vom Spamassassin oder eine neue Version von CentOS vorliegt
trainieren
Das Programm verwendet eine integrierte Bayes-Datenbank, um Textphrasen zu klassifizieren und zu bewerten. Damit das Ganze funktioniert, muss diese Datenbank zunächst trainiert werden. Für das „Training“ sind eine Menge Mails notwendig. Um genug Spam Mails zu bekommen, habe ich das aktuellste Monatsarchiv von http://untroubled.org/spam/ verwendet.
cd /usr/local/src/ wget http://untroubled.org/spam/2017-04.7z 7za x 2017-04.7z sa-learn --dbpath /home/qscand/.spamassassin/ --progress --spam /usr/local/src/2017/04 sa-learn --sync
ClamAV konfigurieren
Der Benutzer/die Gruppe qscand müssen bereits angelegt sein, siehe auch Qmail-Scanner Installation.
groupadd qscand useradd -c "Qmail-Scanner Account" -g qscand -d /home/qscand -s /bin/false qscand
Mit vi /etc/group editieren und den Benutzer clamav in die Benutzer-Gruppe qscand aufnehmen. Beispiel:
(...) qscand:x:510:clamav
Den clamd-Benutzer einstellen. Mit vi /etc/clamd.conf die Konfigurationsdatei öffen und folgende Änderung vornehmen:
# Run as a selected user (clamd must be started by root). # Default: disabled #User clamav User qscand
Berechtigungen setzen, clamd starten und für den Systemstart konfigurieren:
chown -R qscand /var/run/clamav chown -R qscand /var/log/clamav chown -R qscand /var/clamav/ /etc/init.d/clamd start chkconfig clamd on
Prüfen ob clamd wirklich als Benutzer qscand gestartet wurde, das vermeidet spätere Probleme:
ps waux|grep clamd qscand 1689 0.0 1.0 14248 10344 ? Ss 14:24 0:00 clamd root 1703 0.0 0.0 3784 768 pts/1 S+ 14:25 0:00 grep clamd
Freshclam
Mit freshclam werden die Virensignaturen aktualisiert.
Mit vi /etc/freshclam.conf die Konfigurationsdatei öffen und folgende Änderung vornehmen:
# Comment or remove the line below. Example #Example .... # Uncomment the following line and replace XY with your country # code. See http://www.iana.org/cctld/cctld-whois.htm for the full list. # Default: There is no default, which results in an error when running freshclam #DatabaseMirror db.XY.clamav.net DatabaseMirror db.DE.clamav.net # Send the RELOAD command to clamd. # Default: disabled #NotifyClamd NotifyClamd # By default when started freshclam drops privileges and switches to the # "clamav" user. This directive allows you to change the database owner. # Default: clamav (may depend on installation options) #DatabaseOwner clamav DatabaseOwner qscand
und dann einmal die Datenbank manuell aktualisieren.
# freshclam ClamAV update process started at Mon Mar 27 14:26:28 2006 main.cvd is up to date (version: 36, sigs: 44686, f-level: 7, builder: tkojm) daily.cvd is up to date (version: 1357, sigs: 2495, f-level: 7, builder: sven)
Clamav updaten
Nach einem Update von Clamav sollte man überprüfen, ob der Benutzer noch qscand auf der Datei /usr/sbin/clamd.qscand ist, ansonsten den Benutzer auf qscand setzten (s.o.). Gleiches gilt für die Verzeichnisse /var/run/clamav und /var/log/clamd.qscand.
chown qscand /usr/sbin/clamd* chown qscand /var/clam* chown qscand /var/run/clam* chown -R qscand /var/log/clamav/ chown -R qscand /var/lib/clamav/ /etc/init.d/clamd restart freshclam -v
WICHTIG:
Anscheinend hat sich ab Version 0.9 die Konfigurationsdatei geändert. Jetzt muss hinter jeden Parameter immer ein yes oder ein no folgen.
Beispiel:
vor Version 0.9
ScanMail
ab Version 0.9
ScanMail yes
Ansonsten startet der Clamav-Daemon nicht.
WICHTIG: Logrotate für ClamAV auf den qscand-User anpassen
Wenn Logrotate die Logfiles in /var/log/clamav rotiert, hat der User "qscand", unter dem ClamAV läuft, keine Berechtigung mehr. Clamd startet nicht korrekt und freshclam kann kein Update mehr einspielen.
Für die Anpassung folgende Änderungen vornehmen:
Mit vi /etc/logrotate.d/clamav die Konfigurationsdatei öffnen und die Zeile create entsprechend anpassen:
/var/log/clamav/clamd.log {
missingok
notifempty
create 664 qscand clamav
postrotate
killall -HUP clamd 2>/dev/null || :
endscript
}
Mit vi /etc/logrotate.d/freshclam die Konfigurationsdatei öffnen und die Zeile create entsprechend anpassen:
/var/log/clamav/freshclam.log {
missingok
notifempty
create 664 qscand clamav
}
WICHTIG: Berechtigungen anpassen, auch nach jedem ClamAV Update nötig!
chown -R qscand /var/clamav/ /var/log/clamav/ /var/run/clamav/ chmod -R g+w /var/clamav/ /var/log/clamav/ /var/run/clamav/
ClamAV Neustarten und mit freshclam testen ob ein Update klappt.
service clamd restart freshclam
In der Datei /var/spool/qscan/qmail-queue.log kann zudem beim Eingang einer Mail überprüft wurden, ob ClamAV korrekt die Anhänge überprüft. Dieses sollte dann so aussehen, wenn eine Mail mit Anhang eingeht:
Wed, 03 Sep 2008 09:53:36 CEST:22725: clamdscan: finished scan in 0.033611 secs
Qmail-Scanner (Salvatore Toribio Patch Version) installieren
User anlegen, falls noch nicht vorhanden:
groupadd qscand useradd -c "Qmail-Scanner Account" -g qscand -d /home/qscand -s /bin/false qscand
Abhängigkeit: maildrop installieren
Der Qmail-Scanner benötigt reformime aus dem maildrop Paket.
Hier immer nach der aktuellsten Version von maildrop schauen und diese benutzen. Entsprechend den wget-Befehl anpassen!
cd /var/src/ mkdir maildrop cd maildrop/ Immer nach aktuellster Version schauen (siehe oben) wget http://downloads.sourceforge.net/project/courier/maildrop/2.7.1/maildrop-2.7.1.tar.bz2 tar xjf maildrop-2.7.1.tar.bz2 cd maildrop-2.7.1/ ./configure make make install-strip make install-man
Qmail-Scanner konfigurieren und installieren
Hinweis: Auch beim Qmail-Scanner immer nach der aktuellsten Version schauen!
cd /var/src/ mkdir qmail-scanner cd qmail-scanner
wget http://toribio.apollinare.org/qmail-scanner/download/q-s-2.11st-20130319.tgz tar xvzpf q-s-2.11st-20130319.tgz cd qmail-scanner-2.11st
Nun muss der Qmail-Scanner konfiguriert werden. Folgende Optionen haben sich bewährt.
Die Optionen:
- --domain braunschweig-lions.de
- --admin-fromname "Braunschweig Lions Postmaster"
- --local-domains braunschweig-lions.de
müssen entsprechend der Installation angepasst werden.
./configure --qs-user qscand --qs-group qscand --spooldir /var/spool/qscan --qmaildir /var/qmail --bindir /var/qmail/bin --qmail-queue-binary /var/qmail/bin/qmail-queue --admin alert --domain mailx.link-innovation.com --admin-fromname "Link Innovation Postmaster" --notify sender,nmlvadm,precips --local-domains mailx.link-innovation.com --silent-viruses auto --virus-to-delete 1 --skip-text-msgs 1 --lang de_DE --debug 0 --minidebug 1 --add-dscr-hdrs 0 --dscr-hdrs-text "X-Qmail-Scanner" --archive 0 --settings-per-domain 1 --unzip 0 --max-zip-size 1000000000 --max-unpacked-files 10000 --redundant 1 --log-details syslog --log-crypto 0 --fix-mime 2 --ignore-eol-check 1 --sa-subject "SPAM ***" --sa-delta 0.5 --sa-alt 1 --sa-debug 1 --sa-report 0 --sa-quarantine 0 --sa-delete 0 --sa-reject 0 --scanners "auto" --install 1
HINWEIS: Wegen der hier vorhandenen Zeilenumbrüche ist ein direktes Copy & Paste nicht möglich, sondern es muss Zeile für Zeile in das Terminal eingefügt werden.
oder man benutzt folgendes Skript:
#!/bin/sh
./configure --qs-user qscand \
--qs-group qscand \
--spooldir /var/spool/qscan \
--qmaildir /var/qmail \
--bindir /var/qmail/bin \
--qmail-queue-binary /var/qmail/bin/qmail-queue \
--admin alert \
--domain braunschweig-lions.de \
--admin-fromname "Braunschweig Lions Postmaster" \
--notify sender,nmlvadm,precips \
--local-domains mailx.braunschweig-lions.de \
--silent-viruses auto \
--virus-to-delete 1 \
--skip-text-msgs 1 \
--lang de_DE \
--debug 0 \
--minidebug 1 \
--add-dscr-hdrs 0 \
--dscr-hdrs-text "X-Qmail-Scanner" \
--archive 0 \
--settings-per-domain 1 \
--unzip 0 \
--max-zip-size 1000000000 \
--max-unpacked-files 10000 \
--redundant 1 \
--log-details syslog \
--log-crypto 0 \
--fix-mime 2 \
--ignore-eol-check 1 \
--sa-subject "SPAM ***" \
--sa-delta 0.5 \
--sa-alt 1 \
--sa-debug 1 \
--sa-report 0 \
--sa-quarantine 0 \
--sa-delete 0 \
--sa-reject 0 \
--scanners "auto" \
--install 1
Nun geht es mit der interaktiven Konfiguration des configure-Scripts weiter.
- 1. Schritt: Mit [RETURN] bestätigen
- 2. Schritt: Mit [y] und [RETURN] bestätigen
- 3. Schritt: Mit [y] und [RETURN] bestätigen
- 4. Schritt: Das anlegen der Dateien mit [RETURN] bestätigen
- 5. Schritt: Das Routieren der Logfiles einstellen
# cp contrib/logrotate.qmail-scanner /etc/logrotate.d/qmailscanner
Links:
Einbinden des Qmail-Scanner in die Mail-Queue von qmail
Mit vi /var/qmail/supervise/qmail-smtpd/run das smtp-Runscript bearbeiten und nach #!/bin/sh die folgenden Zeilen einfügen:
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" export QMAILQUEUE
Nun muss noch das softlimit deutlich erhöht werden. Dazu mit vi /var/qmail/supervise/qmail-smtpd/run das Supervise-Run-Script bearbeiten und den Wert von softlimit -m {Wert} erhöhen. Z.B. auf softlimit -m 80000000
Jetzt qmail neu starten:
# qmailctl restart
Testen
Nun das Senden und Empfangen von Mail ausgiebig testen und dabei aus Ausgabe in /var/spool/qmailscan/qmail-queue.log und /var/log/qmail/smtpd/current beobachten:
# tail -f /var/spool/qscan/qmail-queue.log /var/log/qmail/smtpd/current
Ein- und ausgehende Mails tragen nun im Header eine entsprechende Information, z.B.:
Received: from 85.214.36.143 by web1.braunschweig-lions.de (envelope-from <dirk@example.com>, uid 89) with qmail-scanner-1.25st (clamdscan: 0.88/1357. spamassassin: 3.0.4. perlscan: 1.25st. Clear:RC:0(85.214.36.143):SA:0(0.0/5.0):. Processed in 4.775654 secs); 27 Mar 2006 13:10:27 -0000 X-Spam-Status: No, hits=0.0 required=5.0
Es werden ein- und ausgehende Mails überprüft. Unser System sollte also auch das Versenden eines Virus verhindern. Das kann man leicht testen, indem man von einem Mail-Account des Systems den EICAR-TestVirus eicar.com als Anhang einer Mail angibt.
Der Qmail-Toaster sollte den Versuch sofort mit einer entsprechenden Fehler-Mail quittieren, die erklärt das der Versand abgelehnt wurde. In /var/spool/qmailscan/qmail-queue.log findet man einen Eintrag dazu:
Mon, 27 Mar 2006 15:15:26 CEST:1548: +++ starting debugging for process 1548 (ppid=1546) by uid=89 Mon, 27 Mar 2006 15:15:26 CEST:1548: w_c: elapsed time from start 0.007668 secs Mon, 27 Mar 2006 15:15:26 CEST:1548: return-path='dirk@test.braunschweig-lions.de', recips='Dirk@example.com' Mon, 27 Mar 2006 15:15:26 CEST:1548: from='Dirk =?ISO-8859-1?Q?Schl=FCter?= "(TEST)" <dirk@test.braunschweig-lions.de>', subj='TEst Virus', via SMTP from 84.133.206.49 Mon, 27 Mar 2006 15:15:26 CEST:1548: clamdscan: there be a virus! (Eicar-Test-Signature) Mon, 27 Mar 2006 15:15:26 CEST:1548: clamdscan: finished scan in 0.017235 secs Mon, 27 Mar 2006 15:15:26 CEST:1548: ini_sc: finished scan of "/var/spool/qmailscan/tmp/web1.braunschweig-lions.de11434653267221548"... Mon, 27 Mar 2006 15:15:26 CEST:1548: ------ Process 1548 finished. Total of 0.13309 secs
Der SpamAssassin kann auch leicht getestet werden. Einfach in einer Mail von EXTERN an einen Qmail-Toaster Account das Schlüsselwort VIAGRA verwerden. Im Logfile sollte es dafür Punkte geben, z.B.:
Mon, 27 Mar 2006 15:19:55 CEST:1617: from='Dirk =?ISO-8859-1?Q?Schl=FCter?= <dirk@example.com>', subj='Test', via SMTP from 85.214.36.143 Mon, 27 Mar 2006 15:19:55 CEST:1617: This is a PLAIN text message, skip virus scanners - but not SA Mon, 27 Mar 2006 15:19:56 CEST:1617: SA: REPORT hits = 0.8/5.0 1.5 DRUG_ED_CAPS BODY: Erwähnt Medikament gegen Erektionsstörung 0.0 DRUGS_ERECTILE Erwähnt ein Medikament gegen Erektionsstörungen -0.8 AWL AWL: From: address is in the auto white-list Mon, 27 Mar 2006 15:19:56 CEST:1617: SA: finished scan in 0.338719 secs - hits=0.8/5.0 Mon, 27 Mar 2006 15:19:56 CEST:1617: p_s: finished scan in 0.042892 secs Mon, 27 Mar 2006 15:19:56 CEST:1617: ini_sc: finished scan of "/var/spool/qmailscan/tmp/web1.braunschweig-lions.de11434655957221617"... Mon, 27 Mar 2006 15:19:56 CEST:1617: ------ Process 1617 finished. Total of 0.474062 secs
Diese Punkte findet man im Mail-Header der empfangenen Mail wieder:
X-Spam-Status: No, hits=0.8 required=5.0
Bei über 5.0 Punkten (siehe Qmail-Scanner Konfiguration) wird der X-Spam-Status auf Yes gesetzt und der Betreff einer Mail mit SPAM *** gekennzeichnet. Anhand eines dieser Merkmale, vorzugsweise des Mail-Headers X-Spam-Status, kann der Benutzer erkannten Spam mit seinem Mailprogramm filtern.
SpamAssassin Bayes-Datenbank
SpamAssassin lernt selbst und kann über eine Bayes-Datenbank trainiert werden. Die genaue Funktion kann im SpamAssassin Manual nachgelesen werden http://spamassassin.apache.org/.
Mit dem Bayes-Filter kann die Wirksamkeit der Spam-Erkennung erhöht werden, wenn sie entsprechend trainiert wird.
Hier wird nur kurz erklärt wie man den Toaster konfiguriert, damit die Lernfunktion aktiviert ist und wie man von einer anderen Installation eine gut trainierte Bayes-Datenbank einspielt.
Auf anderem Qmail-Toaster wo Spam gelernt wird das Paket erstellen:
# cd /home/ # tar cfpvz home-qscand-20060327.tar.gz qscand/
Das Paket auf den neuen Qmail-Toaster übertragen und nach /home/ kopieren. Dann entpacken und Berechtigungen richtig setzen:
# cd /home/ # tar xzf home-qscand-20060327.tar.gz # chown -R qscand.qscand qscand/
Die SpamAssassion-Konfiguration und Bayes-Datenbank des Users qscand ist in /home/qscand/.spamassassin/ zu finden. SpamAssassin neu starten:
# /etc/init.d/spamassassin restart
In /var/spool/qscan/qmail-queue.log sollte nun der Bayes-Scan beim Empfang einer Mail aufgeführt sein:
(...)
Mon, 27 Mar 2006 15:38:33 CEST:1957: This is a PLAIN text message, skip virus scanners - but not SA
Mon, 27 Mar 2006 15:38:33 CEST:1957: SA: REPORT hits = -2.6/5.0
-2.6 BAYES_00 BODY: Spamwahrscheinlichkeit nach Bayes-Test: 0-1%
[score: 0.0000]
0.0 AWL AWL: From: address is in the auto white-list
Mon, 27 Mar 2006 15:38:33 CEST:1957: SA: finished scan in 0.537541 secs - hits=-2.6/5.0
Mon, 27 Mar 2006 15:38:33 CEST:1957: p_s: finished scan in 0.043386 secs
(...)
TODO: Beschreibung wie man Spam lernt...
Qmailadmin
Apache Direktiven für einen virtuellen Host:
ScriptAlias /qmailadmin "/var/www/cgi-bin/qmailadmin" ScriptAlias /cgi-bin/qmailadmin "/var/www/cgi-bin/qmailadmin" Alias /images/qmailadmin/ /var/www/html/images/qmailadmin/
Alternativ die letzte Stable-Version 1.2.16 verwenden, wenn beim kompilieren von 1.2.16 Fehler auftreten.
cd /var/src/tar wget http://downloads.sourceforge.net/project/qmailadmin/qmailadmin-devel/qmailadmin-1.2.16.tar.gz wget http://sourceforge.net/projects/qmailadmin/files/qmailadmin-help/1.0.8/qmailadmin-help-1.0.8.tar.gz cd .. tar -xzf tar/qmailadmin-1.2.16.tar.gz cd qmailadmin-1.2.16 ./configure --enable-help --enable-htmldir=/var/www/html --enable-cgibindir=/var/www/cgi-bin --enable-modify-quota --enable-no-cache make make install-strip cd ../ tar -xzf tar/qmailadmin-help-1.0.8.tar.gz cd qmailadmin-help-1.0.8 mkdir /var/www/html/images/qmailadmin/help cp -rp * /var/www/html/images/qmailadmin/help
Link:
VQAdmin
Mit VQAdmin kann man für vpopmail mehrere Domains veralten, immer beim Link nach neuster Version schauen
cd /var/src/tar wget http://www.inter7.com/vqadmin/vqadmin-2.3.7.tar.gz cd .. tar xvzpf tar/vqadmin-2.3.7.tar.gz cd vqadmin-2.3.7 ./configure make make install-strip
Achtung:
Auf x86_64-Systemen lässt sich vqadmin nicht so einfach übersetzen, weil der Code zu alt ist. Daher einfach aus dem vpopmail-Verzeichnis die Dateien config.guess und config.sub in das vqadmin-Verzeichnis kopieren, und danach geht alles.
Dann in der Apache-Konfiguration des Web, worüber man die Administration aufrufen will, folgende eintragen:
<Directory "/var/www/cgi-bin/vqadmin">
deny from all
Options ExecCGI
AllowOverride AuthConfig
Order deny,allow
</Directory>
und anschließend passt man die .htaccess im Verzeichnis /var/www/cgi-bin/vqadmin/ nach seinen Wünschen an.
vi /var/www/cgi-bin/vqadmin/.htaccess AuthType Basic AuthUserFile /home/www/mail.marketteam.de/acl/vqadmin.passwd AuthName vQadmin require valid-user satisfy any
Hier sollte man AuthUserFile auf eine gültige Passwort-Datei zeigen lassen, die man mit htpasswd angelegt hat.
htpasswd -cb /home/www/mail.marketteam.de/acl/vqadmin.passwd ktsadmin password
Anschließend muß man noch die Rechte für diesen User in der Datei /var/www/cgi-bin/vqadmin/vqadmin.acl setzen. Hier die Zeilen beginnend mit techuser,senior, bzw admin und am Ende folgende Zeile hinzufügen.
vi /var/www/cgi-bin/vqadmin/vqadmin.acl admin * ktsadmin,weiterUser,nochEiner
Anschließend kann man z.B. über http://mailx.braunschweig-lions.de/cgi-bin/vqadmin/vqadmin.cgi die Administration aufrufen.
Hinweis:
Sollte nach erfolgreicher Anmeldung eine Meldung wie invalid language file etc erscheinen, dann hat die automatische Spracherkennung vom Browser her nicht geklappt. Meistens macht es dann Sinn, bei seinen Browser die Sprache unter den Einstellungen auf Deutsch (de) bzw Englisch (en) zu ändern.
Alternativ kann man auch in das Verzeichnis /var/www/cgi-bin/vqadmin/html weiter Sprachdateien erzeigen.
cd /var/www/cgi-bin/vqadmin/html cp de de-de cp de de_DE chown vpopmail.vchkpw *
SquirrelMail
cd /var/src/tar
# Achtung: Immer nach neuster Version schauen! Siehe Projektlink.
wget http://mesh.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.4.15.tar.gz
cd ..
tar xzf tar/squirrelmail-1.4.15.tar.gz
cd tar/squirrelmail-1.4.15
./configure
# Nun Einstellungen wie gewünscht vornehmen, die folgenden auf jeden Fall
* 2. Server Settings
Ggf. IMAP/SMTP localhost gegen die IP/Hostnamen tauschen, wenn Courier nur auf einer IP und nicht auf allen eingerichtet ist
* 4. General Options
Data Directory (1) auf "/var/www/data/"
Attach Directory (2) auf "/var/www/attach/"
Allow server thread sort (10) auf "y"
Allow server-side sorting (11) auf "y"
Save data (s)
* Quit und Save
mv data/ /var/www/
mkdir /var/www/attach
chown -R apache.apache /var/www/data/ /var/www/attach/
mv squirrelmail-1.4.15/ /var/www/html/webmail
Nun in einem gewünschten Virtuellen Host oder der ssl.conf den Zugriff einrichten, z.B. mit
Alias /webmail/ /var/www/html/webmail/ Alias /webmail /var/www/html/webmail/
Natürlich kann jederzeit unter /var/www/html/webmail/ das ./configure Skript aufgerufen werden und somit die Konfiguration verändert werden.
Sprachen einrichten
cd /var/src/tar/ wget http://surfnet.dl.sourceforge.net/sourceforge/squirrelmail/all_locales-1.4.13-20071220.tar.gz mkdir squirrelmail-locale cd squirrelmail-locale tar xzf ../tar/all_locales-1.4.13-20071220.tar.gz ./install # Dort den Pfad "/var/www/html/webmail/" angeben
Tipp: Wenn man nicht soviel mit "y" das Kopieren bestätigen möchte, kurz das install-Skript editieren und das -i beim cp entfernen.
Nun kann man noch mit dem configure Skript in /var/www/html/webmail/ die Default-Sprache auf Deutsch (de_DE) und das Charset z.B. auf iso-8859-15 einstellen.
SIEVE-Filter Plugin
Um den optional eingerichteten SIEVE-Filter auch für die benutzer Steuerbar zu machen, empfiehlt sich die Installation des Avelsieve Plugins für Squirrelmail wie folgt. Die offizielle Seite zu dem Plugin ist unter http://squirrelmail.org/plugin_view.php?id=73 zu finden.
cd /usr/share/squirrelmail/plugins/ wget "http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Favelsieve-1.9.9.tar.gz" tar xfz avelsieve-1.9.9.tar.gz cd ./avelsieve/config/ cp config_sample.php config.php
Änderungen in der Konfiguration
- Mit dem Editor der Wahl nun die frisch kopierte
config.phpöffnen und den Wert von$sieveportvon2000in4190ändern. - Optional können in den Zeilen 151-153 (
$avelsieve_hardcoded_capabilities) noch die Fähigkeiten von SIEVE konfiguriert werden. Alle Einstellungen für den Dovecot LDA, wie im Kommentar darüber aufgelistet, können ohne Probleme übernommen werden. - Vor dem Schließen der Datei muss noch sichergestellt sein, dass die Variable
$avelsieve_disabletlsauftruegesetzt ist. Anschließend Datei speichern und schließen.
Aktivierung des Plugins in Squirrelmail
Abschließend ist das Plugin noch über das Squirrelmail Config-Script zu aktivieren. Dazu muss das /usr/share/squirrelmail/config/conf.pl Script aufgerufen werden. Dabei sind in dem Menü-gesteuerten Script folgende Eingaben zu tätigen und jeweils mit ENTER zu bestätigen:
- 8 (Auswahl des Plugin Menüs)
- Die Zahl vor "avelsieve" unter "Available plugins" (aktiviert das Plugin)
- S (Änderungen speichern)
- Q (Script beenden)
Testen der Einstellungen
Anschließend kann man sich bei Squirrelmail anmelden und unter Optionen -> Nachrichtenfilter einen ersten Filter anlegen. Es empfiehlt sich eine Regel anzulegen, die nach einem String im Betreff sucht und die eMail in einem anderen Ordner als dem Posteingang ablegt. Nach dem Speichern einfach eine eMail an die eigene Adresse senden und schauen ob die Mail richtig abgelegt wurde.
Greylisting Patch
Whitepaper / Beschreibung über Greylisting:
Infos:
Greylisting-Patch für Bill Shupp's netqmail qmail-toaster-0.8 Patch:
Voraussetzungen:
Ein MySQL-Server muss installiert sein, zum kompilieren der gepatchten Quellen von netqmail muss das mysql-devel Paket installiert sein:
Z.B. Fedora Core 4
yum install mysql-devel
cd /var/src mkdir greylisting-patch cd greylisting-patch wget http://shupp.org/patches/greylisting-20060105.patch cd .. cp -ra netqmail-1.06/netqmail-1.06-mit-greylisting/ cd netqmail-1.06-mit-greylisting/netqmail-1.06 cat ../../greylisting-patch/greylisting-20060105.patch | patch -p0
Datenbank und Benutzer anlegen:
mysql -p
mysql> CREATE DATABASE relaydelay;
mysql> use mysql;
mysql> INSERT INTO user (Host,User,Password) VALUES('localhost','milter',PASSWORD('milter'));
mysql> grant select,insert,update,delete on relaydelay.* to milter@"localhost" identified by 'milter';
mysql> quit
mysql -p mysql < dbdef.sql
Hinweis: Auf einem Fedora Core 4 x86_64 und i686 Server war vor dem Kompilieren folgende Änderung am Makefile nötig.
Mit vi Makefile das Makefile öffnen und den Pfad zu libmysqlclient.a ändern. Zusätzlich werden noch die Optionen -lssl -lcrypto hinzugefügt.
ALT
qmail-envelope-scanner: \
load qmail-envelope-scanner.o local_scan.o /usr/lib/libmysqlclient.a
./load qmail-envelope-scanner -lz -lm local_scan.o /usr/lib/libmysqlclient.a
NEU (ab CentOS 6)
qmail-envelope-scanner: \
load qmail-envelope-scanner.o local_scan.o /usr/lib64/mysql/libmysqlclient.so
./load qmail-envelope-scanner -lz -lm -lssl -lcrypto local_scan.o /usr/lib64/mysql/libmysqlclient.so
NEU
qmail-envelope-scanner: \
load qmail-envelope-scanner.o local_scan.o /usr/lib64/mysql/libmysqlclient.a
./load qmail-envelope-scanner -lz -lm -lssl -lcrypto local_scan.o /usr/lib64/mysql/libmysqlclient.a
NEU (i686)
qmail-envelope-scanner: \
load qmail-envelope-scanner.o local_scan.o /usr/lib/mysql/libmysqlclient.a
./load qmail-envelope-scanner -lz -lm -lssl -lcrypto local_scan.o /usr/lib/mysql/libmysqlclient.a
make clean make qmailctl stop make setup check chown -R vpopmail:vchkpw /var/qmail/spam qmailctl start
MySQL Datenbank regelmässig aufräumen
local_scan.c, also das eigentliche Greylisting-Programm, räumt abgelaufene Datenbank-Einträge nicht selbstständig auf. Dieses sollte ein kleines Script übernehmen, welches stündlich ausgeführt wird.
cd /var/src/greylisting-patch/ wget http://shupp.org/software/greylisting-delete-expired.sh cp greylisting-delete-expired.sh /etc/cron.hourly/ chmod 700 /etc/cron.hourly/greylisting-delete-expired.sh
Parameter
Einstellungen können vor dem Kompilieren in der Datei local_scan.c vorgenommen werden. Z.B. hier die Default-Einstellungen:
/************************/ #define DEFAULT_MYSQLHOST "localhost" #define DEFAULT_MYSQLUSER "milter" #define DEFAULT_MYSQLPASS "milter" #define DEFAULT_MYSQLDB "relaydelay" #define DEFAULT_BLOCK_EXPIRE 55 /* minutes until email is accepted */ #define DEFAULT_RECORD_EXPIRE 500 /* minutes until record expires */ #define DEFAULT_RECORD_EXPIRE_GOOD 36 /* days until record expires after accepting email */ #define DEFAULT_LOCAL_SCAN_DEBUG 0 /* set to 1 to enable debugging */ /*************************/
Fuzzy OCR
Hierbei handelt es sich um ein Plugin für Spamassassin, womit der Text in Grafiken gescannt werden kann und anhand einer Wortliste dann entschieden wird, ob die Grafik SPAM enthält
Zuerst installiert man die benötigten Pakete
yum install netpbm-progs ocrad gifsicle perl-String-Approx perl-MLDBM-Sync giflib-utils gocr ImageMagick
Anschließend lädt man das Paket herunter, entpackt dieses und kopiert die Dateien in den Spamassassin-Ordner
cd /var/src/tar/ wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.5.1-devel.tar.gz cd .. tar xvzpf tar/fuzzyocr-3.5.1-devel.tar.gz cp -a FuzzyOcr-3.5.1/FuzzyOcr* /etc/mail/spamassassin/
Zwischendurch checkt man die Version von Spamassassin
# spamassassin -V SpamAssassin version 3.2.5 running on Perl version 5.8.8
Sollte die Version kleiner 3.2.0 sein, sollte man die Datei v320.pre im Ordner /etc/mail/spamassassin bearbeiten (siehe Installationsanleitung)
Nun passt man folgende Zeilen in der Datei FuzzyOcr.cf an
# vi /etc/mail/spamassassin/FuzzyOcr.cf focr_logfile /var/log/FuzzyOcr.log focr_enable_image_hashing 2 #focr_bin_helper tesseract
den Rest lässt man auf den default-Werten. Tesseract nur einschalten, wenn man es installiert hat.
Nun testet man, ob alle Abhängigkeiten erfüllt sind.
# spamassassin --lint
Hier sollte nun keine Ausgabe erfolgen.
Anschließend legt man die Log-Datei mit den korrekten Rechten an, falls diese noch nicht existiert.
touch /var/log/FuzzyOcr.log chown qscand.qscand /var/log/FuzzyOcr.log
Danach testet man, ob eine Grafik als Spam erkannt wird, mit :
spamassassin --debug FuzzyOcr < /var/src/FuzzyOcr-3.5.1/samples/ocr-animated.eml > /dev/null
und irgendwo unten in der Ausgabe erscheint dann:
... [26434] info: FuzzyOcr: Scanset "ocrad" generates enough hits (4), skipping further scansets... [26434] info: FuzzyOcr: Message is spam, score = 9.000 [26434] info: FuzzyOcr: Adding Hash to "/etc/mail/spamassassin/FuzzyOcr.db" with score "9.000" [26434] dbg: FuzzyOcr: Digest: 484116:361:447:7::255:255:255:255:147877::0:0:0:0:7719::153:0:0:46:1764::204:0:0:61:1190::0:0:255:29:1110::255:0:0:76:858 [26434] info: FuzzyOcr: Words found: [26434] info: FuzzyOcr: "price" in 1 lines [26434] info: FuzzyOcr: "company" in 1 lines [26434] info: FuzzyOcr: "alert" in 1 lines [26434] info: FuzzyOcr: "news" in 1 lines [26434] info: FuzzyOcr: (6 word occurrences found) [26434] dbg: FuzzyOcr: Remove DIR: /tmp/.spamassassin26434a9bpvQtmp [26434] dbg: FuzzyOcr: FuzzyOcr ending successfully... [26434] dbg: FuzzyOcr: Processed in 0.524110 sec.
Wichtig ist die 2. Zeile und das keine Fehler aufgetreten sind. Die Fehlermeldungen in /var/log/FuzzyOcr.log bzgl. des Fehlens von gocr und tesseract kann man ignorieren, weil zum Scannen der Texte orcad benutzt wird.
Da nun alles korrekt läuft, müssen wir nur Spamassassin mitteilen, das er das Plugin lädt.
/etc/init.d/spamassassin restart
Links:
Logdatei Rotation
vi /etc/logrotate.d/fuzzyocr
/var/log/FuzzyOcr.log {
rotate 12
weekly
compress
delaycompress
create 664 qscand qscand
}
}
Server-seitige Mailfilterung mit SIEVE
Um eMails auf dem Server bereits in richtige Ordner einsortieren lassen zu können oder einen Autoresponder zu setzen, bietet sich die Verwendung des bereits beschriebene Installation und Konfiguration der SIEVE-Erweiterung Pigeonhole von Dovecot an. Um dies zu aktivieren und durch den Benutzer konfigurierbar zu machen, fehlen nur noch wenige Handgriffe.
Konfiguration des SIEVE Plugins
Die Datei /etc/dovecot/conf.d/90-sieve.conf mit einem beliebigen Editor öffnen und folgende Änderungen vornehmen:
- Zeile 11:
sieve = /home/vpopmail/domains/%d/%n/user.sieve Zeile 53:==> Kann man aktivieren, kann aber u.U. zu Problemen führen. Nur aktivieren wenn unbedingt notwendig!sieve_extensions = +notify +imapflags(optional)
Der Pfad in Zeile 11 entspricht der Standard-Konfiguration und speichert die Benutzer-Konfiguration in dem jeweiligen Ordner des Benutzers, zum Beispiel: /home/vpopmail/domains/link-innovation.de/wickham/user.sieve. Die möglichen Platzhalter können unter http://wiki2.dovecot.org/Variables eingesehen werden.
Anschließend speichern und die neue Konfiguration mittels service dovecot reload neu laden.
Aktivierung des SIEVE Filters pro Domain
Um die Server-seitige Filterung zu aktivieren, muss für jede Domain - die dieses Feature erhalten soll -, der Delivery Agent wie folgt auf Dovecot umgeleitet werden:
cd /home/vpopmail/domains/<DOMAIN>/ vim .qmail-default
Die dort enthaltene Zeile kann entfernt oder in die 2. Zeile verschoben werden. Anschließend die folgende Zeile in der ersten Zeile(!) einfügen und speichern:
|/var/qmail/bin/preline -f /usr/local/dovecot/libexec/dovecot/deliver -d $EXT@$USER
Tuning und Einstellungen
Über verschiedene Dateien in /var/qmail/control/ kann man verschiedene Dinge einstellen. Die Liste ist u.U. nicht komplett, sondern wird bei Bedarf entsprechend erweitert. Nach dem Ändern einer Einstellung sollte qmail sicherheitshalber mit qmailctl restart neu gestartet werden.
Einige Listen findet man hier:
Durch enthaltene Patches kann es weitere Optionen geben.
queuelifetime
Bestimmt wie lange Nachrichten in der Queue verbleiben bis ein Fehler ausgelöst wird, wenn sie nicht zugestellt werden können. In der Default-Einstellung sind das 7 Tage. Die Zeit wird in Sekunden angegeben und kann getrost verringert werden, dann erkennt man auch schnelle etwaige Fehler in der Konfiguration.
Mit # vi /var/qmail/control/queuelifetime die Datei anlegen und die Zeit in Sekunden anlegen, hier z.B. einen Tag:
86400
databytes
Maximale Größe einer E-Mail Nachricht in Bytes, z.B. # vi /var/qmail/control/databytes:
15000000
Größe und Anzahl der Logdateien Wenn man will das QMAIL mehr und größe Logdateien erzeigt muß man die Parameter für multilog im run-Skript ändern. z.B: /service/qmail/log/run
#vi /service/qmail/log/run #!/bin/sh exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t n20 s4999999 /var/log/qmail/smtpd
wobei die Parameter wie folgt belegt sind.
nX:
X ist hierbei die Anzahl der Logdateien, bevor die erste wieder gelöscht wird
sXXXXXXXXX
XXXXXX ist hierbei die Größe der Logdatei in Bytes
Logwatch
Um zu verhindern, das Logwatch sämtliche Details in seinem Statusbericht ausgibt, empfiehlt es sich auf primären Mailservern hier die Defaulteinstellungen etwas zu ändern.
Bad Mime Characters
Man fügt folgende Zeile in /service/qmail-smtp/run' und /service/qmail-smtp/run hinzu, um keine Mails mit BMCs in der Mail zu blocken.
export BMC_WHITELIST="on"
vi /usr/share/logwatch/default.conf/services/qmail-send.conf # This sets whether to display counts of emails from each user & to each user. # Will make rather a large log file if run on a primary mail server. # Set either 0 or 1 #$qmail_high_detail = 1 # default $qmail_high_detail = 0
vi /usr/share/logwatch/default.conf/services/qmail-smtpd.conf # This sets whether to display counts of emails from each user & to each user. # Will make rather a large log file if run on a primary mail server. # Set either 0 or 1 #$qmail_high_detail = 1 # default $qmail_high_detail = 0
Zusätzlich kann man dann noch in der Datei '/etc/logwatch/conf/ignore.conf' ein Paar Ausdrücke aus dem Statusbericht herausfiltern.
vi /etc/logwatch/conf/ignore.conf ###### REGULAR EXPRESSIONS IN THIS FILE WILL BE TRIMMED FROM REPORT OUTPUT ##### CHKUSER accepted sender CHKUSER accepted any rcpt
Tipps & Tricks
WICHTIG: SPF / DNS
Wichtig ist auch die richtige SPF Konfiguration im DNS, da sonst einige Mailserver ggf. die Kommunikation verweigern (Spamschutz).
Überblick
SPF steht für Sender Policy Framework und ist eine Technik zur Vermeidung von Spam- oder Virenmails mit gefälschtem Absender.
Da bei SPF in der Zonendatei des Nameservers der Absenderdomain ein spezieller Eintrag eingebaut wird, ist gewährleistet, dass Unbefugte keine Manipulationen vornehmen können.
SPF verhindert aber kein Spam, für den der Versender eine eigene Domain ordnungsgemäss angemeldet hat und greift auch nicht bei nicht existierenden Domains.
Dieser Überblick stammt von folgender Webseite, wo man einfach verständliche Informationen findet: http://wiki.hetzner.de/index.php/DNS_SPF
Weitere Links
- SMTP+SPF, Sender Policy Framework: http://spf.pobox.com/
- SPF-Mechanismus und Syntax: http://spf.pobox.com/mechanisms.html
- SPF-Tester: http://www.dnsstuff.com/pages/spf.htm
- SRS-Verfahren: http://spf.pobox.com/srs.html
Autorespond fixen
Wenn man autorespond (Mail-Robot) benutzt und im /var/log/qmail/current folgende Fehlermeldung sieht:
(...) deferral: /bin/sh:_/usr/local/bin/autorespond:_No_such_file_or_directory/ (...)
kann man das Problem mit folgendem Kommando beheben:
# ln -s /usr/bin/autorespond /usr/local/bin/autorespond
Mit Mailboxen umziehen
Wenn man mit einem Qmail-Toaster einmal auf eine andere Maschine umzieht, muss man die Mailboxen samt allen Einstellungen/Kennwörtern etc. natürlich mitnehmen. Hier eine kurze Beschreibung wie man das macht ohne eine Mail zu verlieren.
Man kann das ganz gut mit zwei SSH-Terminal-Sitzungen machen. Eine auf dem Quell-Server und eine auf dem Ziel-Server.
Server: Quelle
Als erstes muss man den gesamten Qmail-Toaster stoppen damit keine Mails mehr versendet oder empfangen werden können:
# qmailctl stop # vpopmailctl stop # /etc/init.d/courier-imap stop # /etc/init.d/courier-authlib stop
Nun packt man den gesamten Inhalt von /home/vpopmail/domains ein:
# cd ~ # tar cfvpz mail-domains.tar.gz /home/vpopmail/domains/
Die Datei kann jetzt z.B. via SSH-Copy (scp) auf den anderen Server übertragen werden.
Server: Ziel
Nachdem die Datei auf dem Ziel-Server angekommen ist, kann sie dort eingespielt werden. Dazu entpacken wir zuerst das tar.gz-Paket in einem temp. Ordner, in den wir zuvor mit cd gewechselt sind, und verschieben dann die Mailboxen an den richtigen Platz.
# tar xzf mail-domains.tar.gz # cd home/vpopmail/domains # mv -v * /home/vpopmail/domains/
Server: Quelle
Die Datei /var/qmail/users/assign ausgeben:
# cat /var/qmail/users/assign
Server: Ziel
Den Inhalt der oben ausgegebenen Datei nun in die entsprechende Datei auf dem Ziel-Server anhängen:
# vi /var/qmail/users/assign
HINWEIS: Unbedingt beachten das der . in der letzten Zeile stehten muss!
z.B.:
+test.braunschweig-lions.de-:test.braunschweig-lions.de:89:89:/home/vpopmail/domains/test.braunschweig-lions.de:-:: (...) +red-cubs94.de-:red-cubs94.de:89:89:/home/vpopmail/domains/red-cubs94.de:-:: .
Die Datei speichern.
Server: Quelle
Wieder auf dem Quell-Server eine weitere Datei ausgeben.
# cat /var/qmail/control/rcpthosts
Server: Ziel
Den Inhalt der oben ausgegebenen Datei nun ebenfalls in die entsprechende Datei auf dem Ziel-Server anhängen:
# vi /var/qmail/control/rcpthosts
z.B.:
web1.braunschweig-lions.de test.braunschweig-lions.de mail.marketteam.de marketteam.de braunschweig-lions.de serviceteam-lions.de germanbowl.com junior-lions.de ffc-braunschweig.de red-cubs.de newsletter.braunschweig-lions.de red-cubs94.de
Server: Quelle
Wieder auf dem Quell-Server eine weitere Datei ausgeben.
# cat /var/qmail/control/virtualdomains
Server: Ziel
Den Inhalt der oben ausgegebenen Datei nun ebenfalls in die entsprechende Datei auf dem Ziel-Server anhängen:
# vi /var/qmail/control/virtualdomains
Z.B.:
test.braunschweig-lions.de:test.braunschweig-lions.de web1.braunschweig-lions.de:web1.braunschweig-lions.de marketteam.de:marketteam.de braunschweig-lions.de:braunschweig-lions.de serviceteam-lions.de:serviceteam-lions.de germanbowl.com:germanbowl.com feldschloesschen-german-bowl.de:feldschloesschen-german-bowl.de junior-lions.de:junior-lions.de ffc-braunschweig.de:ffc-braunschweig.de red-cubs.de:red-cubs.de newsletter.braunschweig-lions.de:newsletter.braunschweig-lions.de red-cubs94.de:red-cubs94.de
Nun muss auf dem Ziel-Server noch qmails user datenbank als cdb aktualisiert werden (/var/qmail/users/cdb):
# /var/qmail/bin/qmail-newu
Anhand des Timestamps der Datei kann man überprüfen ob das geklappt hat:
# ls /var/qmail/users/ -al insgesamt 36 drwxr-xr-x 2 root qmail 4096 31. Mär 02:21 . drwxr-xr-x 12 root qmail 4096 24. Mär 15:40 .. -rw-r--r-- 1 root root 1031 31. Mär 02:13 assign -rw------- 1 root root 0 27. Mär 10:49 assign.lock -rw-r--r-- 1 root root 3333 31. Mär 02:21 cdb
Vorsichthalber auf dem Ziel-Server alle Toaster-Dienste neu starten:
# qmailctl restart # vpopmailctl restart # /etc/init.d/courier-imap restart
!!! DNS MX-Einträge können nun umgestellt werden !!!
Der DNS muss umgestellt werden, damit die Mails aus dem Internet auf dem Ziel-Server ankommen.
Man manuell mit dem Programm telnet eine Zustellung einer Mail testen. Dabei z.B. das /var/log/qmail/current und /var/spool/qmailscan/qmail-queue.log beobachten. Das ganze am Besten von Extern:
$ telnet mail.marketteam.de 25 Trying 212.68.65.193... Connected to mail.marketteam.de (212.68.65.193). Escape character is '^]'. 220 web1.braunschweig-lions.de ESMTP helo 250 web1.braunschweig-lions.de mail from:schlueter@link-innovation.de 250 ok rcpt to:webmaster@braunschweig-lions.de 250 ok data 354 go ahead Subject: Erste Testmail, please ignore Das ist nur ein Test. . 250 ok 1143766246 qp 10453
Die beobachteten Logfiles sollten die korrekte Zustellung der Mail anzeigen.
Auf dem alten Server kann man nun noch über die smtproutes dafür sorgen, das alle eingehenden Mails an den neuen Server weitergegeben werden. Das ist sinnvoll weil die DNS-Änderung nicht sofort überall wirkt.
Server: Quelle
Mit # vi /var/qmail/control/smtproutes eine Datei mit folgendem Inhalt anlegen, wobei natürlich die IP-Adressen entsprechend anzupassen sind. In diesem Beispiel ist 212.68.65.193 der neue Server und 213.252.153.34 der alte Server:
:212.68.65.193
Server: Ziel
Mit vi /home/vpopmail/etc/tcp.smtp folgenden Eintrag anhängen:
213.252.153.34:allow,RELAYCLIENT=""
Die cdb-Datei in home/vpopmail/etc/ neu schreiben:
# qmailctl cdb
Server: Quelle
Nun auf dem Quell-Server qmail wieder starten:
# qmailctl start
Nun kann wieder von extern eine Testmail an den alten Server abgesetzt werden:
$ telnet 213.252.153.34 25 Trying 213.252.153.34... Connected to bs-lions-mail.bcc.de (213.252.153.34). Escape character is '^]'. 220 mail.marketteam.de ESMTP helo 250 mail.marketteam.de mail from:dirk@schlicker.org 250 ok rcpt to:webmaster@braunschweig-lions.de 250 ok Data 354 go ahead Subject: Test 3, mail an alten Server Diese Mail wurde via smtp am alten server abgeliefert, sollte weitergeleitet werden wen den Webserver... . 250 ok 1143766837 qp 29472
Wenn alles geklappt hat und die Mail über den neuen Server zugestellt wurde, war es das.
Courier-IMAP nach Dovecot
Sollte man den IMAP-Server gewechselt haben, dann muss man noch die Postfächer für dovecot wandeln
/usr/bin/courier-dovecot-migrate.pl --to-dovecot --recursive --convert /home/vpopmail/domains/domain
Mailinglisten reparieren
Manchmal kann es vorkommen, besonders nach einem Server-Umzug das die Administration einer Mailingliste mit QmailAdmin nicht mehr funktioniert, z.B das man keine Subscriber oder Moderatoren mehr löschen kann.
Dann ist es sinnvoll, die Subscriber, bzw Moderatoren zu exportieren, dann in der Liste zu löschen, und anschließend wieder hinzu zufügen.
Liste sichern
Subscriber
ezmlm-list DIR > subscriber.txt
wobei dir das Verzeichnis zur Mailingliste ist, also /home/vpopmail/domains/domain.de/list
Moderatoren
ezmlm-list DIR/mod > mods.txt
Liste aufräumen
Subscriber
/bin/rm DIR/subscribers/*
Moderatoren
/bin/rm DIR/mod/subscribers/*
Liste neu aufbauen
Subscriber
ezmlm-sub DIR < subscriber.txt
Moderatoren
ezmlm-sub DIR/mod < mods.txt
Anschließend sollte man wie gewohnt mir QMailAdmin arbeiten können
SPAM Abwehr
Netzwerke blockieren
Um im ersten Schritt eine SPAM-Attacke zu unterbinden, macht es Sinn, per Firewall das Netzwerk, den Rechner des Angreifers zu blockieren.
iptables -I INPUT -s 220.181.12.0/24 -p tcp --dport 25 -j DROP iptables -I INPUT -s 220.181.12.0/24 -p udp --dport 25 -j DROP
Mit diesen iptables Anweisungen werden sämtlich Pakete aus dem Netzwerk 220.181.12.0/24 (China) auf Port 25 (smtp) verworfen. Damit verhindert man erstmal, das weitere SPAM-Mails eintreffen.
Qmail Queue leeren
Da nach einer SPAM-Attacke meistens die QMail Mailqueue extrem gefüllt ist, kommt es natürlich zu Beischränkunegn bei dem normalen Mailverkehr. Daher macht es Sinn, die Queue dediziert zu bereinigen.
Dieses erreicht man mit dem Befehl:
qmail-remove -p "220.181.12" -d
Hier werden sämtliche Mails aus der Queue gelöscht, die irgendwo das Suchmuster (-p) "220.181.12" in der Mail enthalten.
Download: http://www.linuxmagic.com/opensource/qmail/qmail-remove/
Doublebounce unterbinden
Email-Konto einrichten, wohin doublebounce Mails verschwinden
echo '#' > /var/qmail/alias/.qmail-doublebounce echo "doublebounce" > /var/qmail/control/doublebounceto
SPAM IPs in DB merken
Da schon eine DB für den Mailserver existiert (relaydelay), wird diese um eine Tabelle erweitert.
use database relaydelay; CREATE TABLE `spam_ips` ( `ipaddress` varchar(40) NOT NULL default '', `dateadded` datetime NOT NULL default '0000-00-00 00:00:00', `reportedby` varchar(40) default NULL, `updated` datetime default NULL, `attacknotes` text, `b_or_w` char(1) NOT NULL default 'b', `dnsname` varchar(255) default'', `hits` int(11) NOT NULL default NULL, PRIMARY KEY (`ipaddress`), KEY `dateadded` (`dateadded`), KEY `b_or_w` (`b_or_w`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='spammer list';
wichtige Links
https://talosintelligence.com/reputation_center/lookup?search=85.214.122.89