1. Ich werde hier im HowTo nicht auf die Installation von Spamassassin mit allen benötigten Abhängigkeiten eingehen. Dazu finden sich genug sehr gute HowTo's, auch hier im Forum. Ansonsten wird man sicher über Google fündig ;)
Ich setze also eine funktionierende Spamassassin-Installation voraus.
2. Dieses HowTo ist nicht allein meine Arbeit, sondern baut stark auf den HowTo's von Rene Sasse (http://www.world-email.cx/) und Tim Jackson (http://www.timj.co.uk/linux/Exim-SpamAn ... anning.pdf) auf. Dank an die beiden für ihre Arbeit. Meine Aufgabe sah ich eher darin, beides mit einzelnen Modifikationen zu kombinieren und in einem (hoffentlich) leicht nachzuvollziehenden Artikel zu kombinieren.
Ablauf:
In's gewünschte src-Verzeichnis wechseln. Ich verwende bei mir /src.
Code: Select all
cd /srcCode: Select all
wget ftp://ftp.fu-berlin.de/unix/mail/exim/exim4/exim-4.24.tar.gz
wget http://duncanthrax.net/exiscan-acl/exiscan-acl-4.24-13.patch
wget http://cesnet.dl.sourceforge.net/sourceforge/courier/courier-imap-2.2.0.tar.bz2
wget http://cesnet.dl.sourceforge.net/sourceforge/clamav/clamav-0.60.tar.gzCode: Select all
tar xzf exim-4.24.tar.gz
cd exim-4.24Code: Select all
patch -Np1 -i ../exiscan-acl-4.24-13.patchCode: Select all
groupadd exim
useradd -s /bin/false -d /dev/null -g exim eximCode: Select all
cp src/EDITME Local/MakefileCode: Select all
BIN_DIRECTORY=/usr/sbin
CONFIGURE_FILE=/etc/exim.conf
EXIM_USER=exim
EXIM_GROUP=exim
SUPPORT_MAILDIR=yes
SUPPORT_MAILSTORE=yes
LOOKUP_DNSDB=yes
LOOKUP_MYSQL=yes
LOOKUP_INCLUDE=-I /usr/local/include/mysql # bitte je nach System anpassen!
LOOKUP_LIBS=-L/usr/local/lib -L/usr/local/lib/mysql -lmysqlclient # bitte je nach System anpassen!
# EXIM_MONITOR=eximon.bin
AUTH_CRAM_MD5=yes
AUTH_PLAINTEXT=yes
INFO_DIRECTORY=/usr/share/info
LOG_FILE_PATH=syslog
SYSLOG_LONG_LINES=yes
PID_FILE_PATH=/var/lock/exim.pidCode: Select all
SUPPORT_TLS=yes
TLS_LIBS=-lssl -lcryptoCode: Select all
USE_GDBM=yes
DBMLIB=-lgdbmCode: Select all
make
make installCode: Select all
ln -sf exim /usr/sbin/sendmailCode: Select all
cat > /etc/rc.d/init.d/exim << "EOF"
#!/bin/sh
# /etc/rc.d/init.d/exim - Starts the exim MTA
source /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Starting exim..."
loadproc /usr/sbin/exim -bd -q1m
evaluate_retval
;;
stop)
echo "Stopping exim..."
killproc exim
evaluate_retval
;;
status)
statusproc exim
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
EOF
cd /etc/rc.d/init.d
chmod 750 exim
ln -sf ../init.d/exim ../rc0.d/K25exim
ln -sf ../init.d/exim ../rc1.d/K25exim
ln -sf ../init.d/exim ../rc2.d/K25exim
ln -sf ../init.d/exim ../rc3.d/S35exim
ln -sf ../init.d/exim ../rc4.d/S35exim
ln -sf ../init.d/exim ../rc5.d/S35exim
ln -sf ../init.d/exim ../rc6.d/K25eximHier müssen in der user-Tabelle für die Felder uid und gid die entsprechenden Werte für den exim-User eingetragen werden. Ein Blick in die /etc/passwd hilft hier weiter.
Für Anfänger sei phpMyAdmin empfohlen, da geht das ganze wohl auch am schnellsten.
Folgende Schritte müssen ausgeführt werden:
- Datenbank "exim" anlegen.
- User "exim" hinzufügen und SELECT-Rechte für die erstellte Datenbank geben.
- Folgende Tabellen anlegen:
Code: Select all
CREATE TABLE `aliases` (
`ID` smallint(6) NOT NULL auto_increment,
`alias` varchar(255) NOT NULL default '',
`redirect` varchar(255) NOT NULL default '',
PRIMARY KEY (`ID`)
) TYPE=MyISAM;
CREATE TABLE `domains` (
`ID` smallint(6) NOT NULL auto_increment,
`domain` varchar(255) NOT NULL default '',
PRIMARY KEY (`ID`)
) TYPE=MyISAM;
CREATE TABLE `users` (
`ID` smallint(6) NOT NULL auto_increment,
`email` varchar(255) NOT NULL default '',
`name` varchar(255) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`password_clear` varchar(255) NOT NULL default '',
`uid` smallint(6) NOT NULL default '<!UID_VON_EXIM!>',
`gid` smallint(6) NOT NULL default '<!GID_VON_EXIM!>',
`home` varchar(255) NOT NULL default '',
`directory` varchar(255) NOT NULL default '',
PRIMARY KEY (`ID`)
) TYPE=MyISAM;Code: Select all
INSERT INTO `domains` ( `ID` , `domain` )
VALUES (
'', 'deineDomain.tld'
);Code: Select all
perl -e '$passwd=crypt("myPassword","xy"); print "$passwdn";'Code: Select all
INSERT INTO `users` ( `ID` , `email` , `name` , `password` , `password_clear` , `home` , `directory` )
VALUES (
'', 'webmaster@deineDomain.tld', 'Webmaster', '<verschlüsseltesPasswort>', '<KlartextPasswort>', '/var/spool/imap/deineDomain.tld/webmaster', '/var/spool/imap/deineDomain.tld/webmaster/Maildir'
);Code: Select all
INSERT INTO `aliases` ( `ID` , `alias` , `redirect` )
VALUES (
'', 'postmaster@deineDomain.tld', 'webmaster@deineDomain.tld'
);
INSERT INTO `aliases` ( `ID` , `alias` , `redirect` )
VALUES (
'', 'root@deineDomain.tld', 'webmaster@deineDomain.tld'
);Code: Select all
mkdir /var/spool/imap
chown exim:exim /var/spool/imapNun zur Installation der zusätzlichen Pakete.
Code: Select all
cd /src
tar xzf clamav-0.60.tar.gz
cd clamav-0.60
./configure --prefix=/usr --sysconfdir=/etc --disable-clamuko --with-user=exim --with-group=exim
make
make installCode: Select all
freshclamIn der /etc/clamav.conf müssen als erstes die Zeile "Example" auskommentiert und folgende Einträge editiert werden:
Code: Select all
LogTime
LogSyslog
LogVerbose
PidFile /var/run/clamd.pid
User exim
AllowSupplementaryGroupsCode: Select all
cat > /etc/rc.d/init.d/clamd << "EOF"
#!/bin/sh
# /etc/rc.d/init.d/clamd - Starts the clamd daemon
source /etc/rc.d/init.d/functions
case "$1" in
start)
echo "Starting clamd..."
loadproc /usr/sbin/clamd
evaluate_retval
;;
stop)
echo "Stopping clamd..."
killproc clamd
evaluate_retval
;;
status)
statusproc clamd
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
EOF
cd /etc/rc.d/init.d
chmod 750 clamd
ln -sf ../init.d/clamd ../rc0.d/K25clamd
ln -sf ../init.d/clamd ../rc1.d/K25clamd
ln -sf ../init.d/clamd ../rc2.d/K25clamd
ln -sf ../init.d/clamd ../rc3.d/S35clamd
ln -sf ../init.d/clamd ../rc4.d/S35clamd
ln -sf ../init.d/clamd ../rc5.d/S35clamd
ln -sf ../init.d/clamd ../rc6.d/K25clamdFortsetzung im nächsten Beitrag ;)
