Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (Ubuntu 8.04 LTS) - Seite 2

6 Konfiguration von Saslauthd

Führe zuerst dies aus

mkdir -p /var/spool/postfix/var/run/saslauthd

Bearbeite dann /etc/default/saslauthd. Setze START auf yes und ändere die Zeile OPTIONS="-c -m /var/run/saslauthd" zu OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r":

vi /etc/default/saslauthd


#
# Settings for saslauthd daemon # Please read /usr/share/doc/sasl2-bin/README.Debian for details. # # Should saslauthd run automatically on startup? (default: no) START=yes # Description of this saslauthd instance. Recommended. # (suggestion: SASL Authentication Daemon) DESC="SASL Authentication Daemon" # Short name of this saslauthd instance. Strongly recommended. # (suggestion: saslauthd) NAME="saslauthd" # Which authentication mechanisms should saslauthd use? (default: pam) # # Available options in this Debian package: # getpwent -- use the getpwent() library function # kerberos5 -- use Kerberos 5 # pam -- use PAM # rimap -- use a remote IMAP server # shadow -- use the local shadow password file # sasldb -- use the local sasldb database file # ldap -- use LDAP (configuration is in /etc/saslauthd.conf) # # Only one option may be used at a time. See the saslauthd man page # for more information. # # Example: MECHANISMS="pam" MECHANISMS="pam" # Additional options for this mechanism. (default: none) # See the saslauthd man page for information about mech-specific options. MECH_OPTIONS="" # How many saslauthd processes should we run? (default: 5) # A value of 0 will fork a new process for each connection. THREADS=5 # Other options (default: -c -m /var/run/saslauthd) # Note: You MUST specify the -m option or saslauthd won't run! # # See /usr/share/doc/sasl2-bin/README.Debian for Debian-specific information. # See the saslauthd man page for general information about these options. # # Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd" #OPTIONS="-c -m /var/run/saslauthd" OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Erstelle dann die Datei /etc/pam.d/smtp. Sie sollte nur folgende beiden Zeilen beinhalten (vergewissere Dich, dass Du die richtigen Datenbankangaben eingibst):

vi /etc/pam.d/smtp


auth    required   pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail_admin passwd=mail_admin_password host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
Als Nächstes erstellen wir die Datei /etc/postfix/sasl/smtpd.conf. So sollte es aussehen:

vi /etc/postfix/sasl/smtpd.conf


pwcheck_method: saslauthd
mech_list: plain login allow_plaintext: true auxprop_plugin: mysql sql_hostnames: 127.0.0.1 sql_user: mail_admin sql_passwd: mail_admin_password sql_database: mail sql_select: select password from users where email = '%u'
Füge als Nächstes den postfix Benutzer der sasl Gruppe hinzu (das stellt sicher, dass Postfix die Berechtigung hat, auf saslauthd zuzugreifen):

adduser postfix sasl

Starte dann Postfix und Saslauthd neu:

/etc/init.d/postfix restart
/etc/init.d/saslauthd restart

7 Konfiguration von Courier

Nun müssen wir Courier mitteilen, dass es sich gegenüber unserer MySQL Datenbank authentifizieren soll. Bearbeite zunächst /etc/courier/authdaemonrc und ändere den Wert von authmodulelist so dass es heißt:

vi /etc/courier/authdaemonrc


[...]
authmodulelist="authmysql" [...]
Nimm dann ein Backup von /etc/courier/authmysqlrc vor und leere die alte Datei:

cp /etc/courier/authmysqlrc /etc/courier/authmysqlrc_orig
cat /dev/null > /etc/courier/authmysqlrc

Öffne dann /etc/courier/authmysqlrc und füge folgende Zeilen ein:

vi /etc/courier/authmysqlrc


MYSQL_SERVER localhost
MYSQL_USERNAME mail_admin MYSQL_PASSWORD mail_admin_password MYSQL_PORT 0 MYSQL_DATABASE mail MYSQL_USER_TABLE users MYSQL_CRYPT_PWFIELD password #MYSQL_CLEAR_PWFIELD password MYSQL_UID_FIELD 5000 MYSQL_GID_FIELD 5000 MYSQL_LOGIN_FIELD email MYSQL_HOME_FIELD "/home/vmail" MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') #MYSQL_NAME_FIELD MYSQL_QUOTA_FIELD quota
Starte Courier dann neu:

/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart

Indem Du Folgendes ausführst

telnet localhost pop3

kannst Du sehen, ob Dein POP3 Server richtig funktioniert. Er sollte +OK Hello there zurückgeben. (Gib quit ein um zurück zur Linux Kommandozeile zu gelangen.)

root@server1:/etc/postfix# telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK Hello there.
quit
+OK Better luck next time.
Connection closed by foreign host.
root@server1:/etc/postfix#

8 Modifiziere /etc/aliases

Nun sollten wir /etc/aliases öffnen. Pass auf, dass postmaster auf root und root auf Deinen eigenen Benutzernamen oder Deine E-Mail Adresse gerichtet ist, z.B. wie folgt:

vi /etc/aliases


[...]
postmaster: root root: postmaster@yourdomain.tld [...]
oder wie dies (wenn administrator Dein eigener Benutzername ist):
[...]
postmaster: root root: administrator [...]
Jedes Mal, wenn Du /etc/aliases modifizierst, musst Du dies

newaliases

danach ausführen und Postfix neu starten:

/etc/init.d/postfix restart


9 Installation von amavisd-new, SpamAssassin und ClamAV

Um amavisd-new, spamassassin und clamav zu installieren, führe folgenden Befehl aus:

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 unzoo libnet-ph-perl libnet-snpp-perl libnet-telnet-perl nomarch lzop pax

Danach müssen wir amavisd-new konfigurieren. Die Konfiguration ist in verschiedenen Dateien aufgeteilt, die sich im /etc/amavis/conf.d Verzeichnis befinden. Sieh Dir jede einzelne an um Dich mit der Konfiguration vertraut zu machen. Die meisten Einstellungen sind in Ordnung, allerdings müssen wir drei Dateien ändern:

Zuerst müssen wir ClamAV und SpamAssassin in /etc/amavis/conf.d/15-content_filter_mode aktivieren indem wir die @bypass_virus_checks_maps und @bypass_spam_checks_maps Zeile aktivieren:

vi /etc/amavis/conf.d/15-content_filter_mode

Die Datei sollte wie folgt aussehen:
use strict;
# You can modify this file to re-enable SPAM checking through spamassassin # and to re-enable antivirus checking. # # Default antivirus checking mode # Uncomment the two lines below to enable it back # @bypass_virus_checks_maps = ( %bypass_virus_checks, @bypass_virus_checks_acl, $bypass_virus_checks_re); # # Default SPAM checking mode # Uncomment the two lines below to enable it back # @bypass_spam_checks_maps = ( %bypass_spam_checks, @bypass_spam_checks_acl, $bypass_spam_checks_re); 1; # ensure a defined return
Dann solltest Du Dir die Spam Einstellungen und die Aktionen für Spam-/Virus-Mails in /etc/amavis/conf.d/20-debian_defaults ansehen. Wenn Du mit den Einstellungen zufrieden bist, musst Du nichts ändern. Die Datei beinhaltet viele Erklärungen, ich muss hier also nichts erklären:

vi /etc/amavis/conf.d/20-debian_defaults


[...]
$QUARANTINEDIR = "$MYHOME/virusmails"; $quarantine_subdir_levels = 1; # enable quarantine dir hashing $log_recip_templ = undef; # disable by-recipient level-0 log entries $DO_SYSLOG = 1; # log via syslogd (preferred) $syslog_ident = 'amavis'; # syslog ident tag, prepended to all messages $syslog_facility = 'mail'; $syslog_priority = 'debug'; # switch to info to drop debug output, etc $enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny) $enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1 $inet_socket_port = 10024; # default listening socket $sa_spam_subject_tag = '***SPAM*** '; $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level $sa_kill_level_deflt = 6.31; # triggers spam evasive actions $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent $sa_mail_body_size_limit = 200*1024; # don't waste time on SA if mail is larger $sa_local_tests_only = 0; # only tests which do not require internet access? [...] $final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine) $final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA $final_spam_destiny = D_BOUNCE; $final_bad_header_destiny = D_PASS; # False-positive prone (for spam) [...]
Bearbeite schließlich /etc/amavis/conf.d/50-user und füge die Zeile $pax='pax'; in der Mitte ein:

vi /etc/amavis/conf.d/50-user


use strict;
# # Place your configuration directives here. They will override those in # earlier files. # # See /usr/share/doc/amavisd-new/ for documentation and examples of # the directives you can use in this file # $pax='pax'; #------------ Do not modify anything below this line ------------- 1; # ensure a defined return
Führe dann danach diese Befehle aus um den clamav Benutzer der amavis Gruppe hinzuzufügen und amavisd-new und ClamAV neu zu starten:

adduser clamav amavis
/etc/init.d/amavis restart
/etc/init.d/clamav-daemon restart
/etc/init.d/clamav-freshclam restart

Nun müssen wir Postfix neu konfigurieren um eingehende E-Mails durch amavisd-new zu leiten:

postconf -e 'content_filter = amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options = no_address_mappings'

Hänge danach folgende Zeilen an /etc/postfix/master.cf:

vi /etc/postfix/master.cf


[...]
amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_bind_address=127.0.0.1
Starte Postfix dann neu:

/etc/init.d/postfix restart

Führe nun dies aus

netstat -tap

und Du solltest feststellen, dass Postfix (master) auf Port 25 (smtp) und 10025 und amavisd-new auf Port 10024 hört:

root@server1:/etc/postfix# netstat -tap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost.localdo:10024 *:* LISTEN 15645/amavisd (mast
tcp 0 0 localhost.localdo:10025 *:* LISTEN 16677/master
tcp 0 0 localhost.localdo:mysql *:* LISTEN 6177/mysqld
tcp 0 0 *:www *:* LISTEN 5367/apache2
tcp 0 0 *:smtp *:* LISTEN 16677/master
tcp6 0 0 [::]:imaps [::]:* LISTEN 14020/couriertcpd
tcp6 0 0 [::]:pop3s [::]:* LISTEN 14088/couriertcpd
tcp6 0 0 [::]:pop3 [::]:* LISTEN 14051/couriertcpd
tcp6 0 0 [::]:imap2 [::]:* LISTEN 13983/couriertcpd
tcp6 0 0 [::]:ssh [::]:* LISTEN 4006/sshd
tcp6 0 52 server1.example.com:ssh 192.168.0.210%8191:3340 ESTABLISHED 4059/0
root@server1:/etc/postfix#

10 Installation von Razor, Pyzor und DCC sowie Konfiguration von SpamAssassin

Razor, Pyzor und DCC sind Spamfilter, die ein gemeinsames Filternetzwerk verwenden. Um Razor und Pyzor zu installieren, führe dies aus

apt-get install razor pyzor

DCC ist in den Ubuntu 8.04 Paketdatenbanken nicht verfügbar, also installieren wir es wie folgt:

cd /tmp
wget http://launchpadlibrarian.net/11564361/dcc-server_1.3.42-5_i386.deb
wget http://launchpadlibrarian.net/11564359/dcc-common_1.3.42-5_i386.deb
dpkg -i dcc-common_1.3.42-5_i386.deb
dpkg -i dcc-server_1.3.42-5_i386.deb

Nun müssen wir SpamAssassin mitteilen, dass es diese drei Programme verwenden soll. Bearbeite /etc/spamassassin/local.cf und füge folgende Zeilen hinzu:

vi /etc/spamassassin/local.cf


[...]
#dcc use_dcc 1 dcc_path /usr/bin/dccproc #pyzor use_pyzor 1 pyzor_path /usr/bin/pyzor #razor use_razor2 1 razor_config /etc/razor/razor-agent.conf #bayes use_bayes 1 use_bayes_rules 1 bayes_auto_learn 1
Dann müssen wir den DCC Plugin in SpamAssassin aktivieren. Öffne /etc/spamassassin/v310.pre und aktiviere die loadplugin Mail::SpamAssassin::Plugin::DCC Zeile:

vi /etc/spamassassin/v310.pre


[...]
# DCC - perform DCC message checks. # # DCC is disabled here because it is not open source. See the DCC # license for more details. # loadplugin Mail::SpamAssassin::Plugin::DCC [...]
Du kannst Deine SpamAssassin Konfiguration überprüfen, indem Du dies ausführst:

spamassassin --lint

Es sollte keine Fehler anmelden.

Starte amavisd-new danach neu:

/etc/init.d/amavis restart

Nun aktualisieren wir unsere SpamAssassin Rulesets wie folgt:

sa-update --no-gpg

Wir erstellen einen Cron Job, so dass die Rulesets regelmäßig aktualisiert werden. Führe dies aus

crontab -e

um den Cron Job Editor zu öffnen. Erstelle folgenden Cron Job:
23 4 */2 * * /usr/bin/sa-update --no-gpg &> /dev/null
Damit werden die Rulesets jeden zweiten Tag um 4.23 Uhr aktualisiert.

3 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: maen007

Lieber Moderator,

sei so gut und lösche alles! Ich habe nur noch ein Problem:

telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.

user testproxy@XXX.de
+OK Password required.
pass XXX
-ERR chdir XXX/testproxy/ failed
Connection closed by foreign host.

Das passiert auch, wenn ich über squirrelmail einen Start versuche... Weiß da jemand Rat?


Von: koelschejung74

Hi,

die Anleitung finde ich gut, nur leider wird bei mir kein Verzeichnis in /home/vmail erstellt, wenn ich eine Mail an einen User schicke, postfix verschickt die Mails direkt an die Mailadresse. Woran kann das liegen?

Welche Infos werden benötitg?

VG
Koelschejung74


Von: koelschejung74

Nachtrag, deswegen kann ich mich dann auch nicht bei squirrelmail anmelden