Virtuelle Benutzer und Domains mit Postfix, Courier, MySQL und SquirrelMail (Mandriva 2008.1) - Seite 4

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

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

urpmi perl-Razor-Agent pyzor dcc

Initialisiere dann Razor und Pyzor:

chmod -R a+rX /usr/share/doc/pyzor-0.4.0 /usr/bin/pyzor /usr/bin/pyzord
chmod -R a+rX /usr/lib/python2.5/site-packages/pyzor
chown amavis:amavis /var/spool/amavis/
su -m amavis -c 'pyzor --homedir /var/spool/amavis discover'
su -m amavis -c 'razor-admin -home=/var/spool/amavis -create'
su -m amavis -c 'razor-admin -home=/var/spool/amavis -register'

Nun müssen wir SpamAssassin mitteilen, dass es diese drei Programme verwenden soll. Bearbeite /etc/mail/spamassassin/local.cf so dass es wie folgt aussieht:

cp /etc/mail/spamassassin/local.cf /etc/mail/spamassassin/local.cf_orig
cat /dev/null > /etc/mail/spamassassin/local.cf
vi /etc/mail/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 /var/spool/amavis/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/mail/spamassassin/v310.pre und aktiviere die loadplugin Mail::SpamAssassin::Plugin::DCC Zeile:

vi /etc/mail/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 Folgendes ausführst:

spamassassin --lint

Es dürften keine Fehler angezeigt werden.

Führe danach dies aus:

/etc/init.d/amavisd 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 den 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.

11 Quota Überschreitungsmeldung

Wenn Du Meldungen bezüglich aller E-Mail Konten erhalten möchtest, die über Quota sind, dann führe Folgendes aus:

cd /usr/local/sbin/
wget http://puuhis.net/vhcs/quota.txt
mv quota.txt quota_notify
chmod 755 quota_notify

Öffne /usr/local/sbin/quota_notify und bearbeite die Variablen zu Beginn. Weiter unten in der Datei (gegen Ende) gibt es zwei Zeilen, denen Du ein % Zeichen anhängen solltest:

vi /usr/local/sbin/quota_notify


[...]
my $POSTFIX_CF = "/etc/postfix/main.cf"; my $MAILPROG = "/usr/sbin/sendmail -t"; my $WARNPERCENT = 80; my @POSTMASTERS = ('postmaster@yourdomain.tld'); my $CONAME = 'My Company'; my $COADDR = 'postmaster@yourdomain.tld'; my $SUADDR = 'postmaster@yourdomain.tld'; my $MAIL_REPORT = 1; my $MAIL_WARNING = 1; [...] print "Subject: WARNING: Your mailbox is $lusers{$luser}% full.n"; [...] print "Your mailbox: $luser is $lusers{$luser}% full.nn"; [...]
Führe dies aus

crontab -e

um einen Cron Job für dieses Skript zu erstellen:
0 0 * * * /usr/local/sbin/quota_notify &> /dev/null

12 Postfix testen

Um herauszufinden, ob Postfix für SMTP-AUTH und TLS bereit ist, führe Folgendes aus

telnet localhost 25

Nachdem Du die Verbindung zu Deinem Postfix Mail Server aufgebaut hast, tippe

ehlo localhost

Wenn Du die Zeile

250-STARTTLS
und

250-AUTH PLAIN LOGIN
siehst, ist alles in Ordnung.

[root@server1 sbin]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (2.5.1) (Mandriva Linux)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@server1 sbin]#

Tippe

quit

um zur Kommandozeile des Systems zurückzukehren.

13 Die Datenbank füllen und testen

Um die Datenbank zu füllen, kannst Du die MySQL Kommandozeile verwenden:

mysql -u root -p

USE mail;

Du musst wenigstens Einträge in der Tabelle domains und users erstellen:

INSERT INTO `domains` (`domain`) VALUES ('example.com');
INSERT INTO `users` (`email`, `password`, `quota`) VALUES ('sales@example.com', ENCRYPT('secret'), 10485760);

(Pass bitte auf, dass Du den ENCRYPT Syntax im zweiten INSERT Statement verwendest, um das Passwort zu verschlüsseln!)

Wenn Du Einträge in den anderen beiden Tabellen vornehmen möchtest, würde dies so aussehen:

INSERT INTO `forwardings` (`source`, `destination`) VALUES ('info@example.com', 'sales@example.com');
INSERT INTO `transport` (`domain`, `transport`) VALUES ('example.com', 'smtp:mail.example.com');

Um die MySQL Kommandozeile zu verlassen, tippe

quit;

Für die Meisten ist es einfacher, wenn sie ein grafisches Front-end für MySQL haben; daher kannst Du auch phpMyAdmin (in diesem Beispiel unter http://192.168.0.100/phpmyadmin/ oder http://server1.example.com/phpmyadmin/) verwenden, um die mail Datenbank zu verwalten. Wenn Du einen Benutzer einrichtets, pass auf, dass Du die ENCRYPT Funktion verwendest um das Passwort zu verschlüsseln:


Ich denke nicht, dass ich die domains und users Tabellen hier noch weiter erklären muss.

Die forwardings Tabelle könnte folgende Einträge haben:
source destination  
info@example.com sales@example.com Redirects emails for info@example.com to sales@example.com
@example.com thomas@example.com Creates a Catch-All account for thomas@example.com. All emails to example.com will arrive at thomas@example.com, except those that exist in the users table (i.e., if sales@example.com exists in the users table, mails to sales@example.com will still arrive at sales@example.com).
@example.com @anotherdomain.tld This redirects all emails to example.com to the same user at anotherdomain.tld. E.g., emails to thomas@example.com will be forwarded to thomas@anotherdomain.tld.
info@example.com sales@example.com, billing@anotherdomain.tld Forward emails for info@example.com to two or more email addresses. All listed email addresses under destination receive a copy of the email.Die transport Tabelle könnte folgende Einträge haben:
domain transport  
example.com : Delivers emails for example.com locally. This is as if this record would not exist in this table at all.
example.com smtp:mail.anotherdomain.tld Delivers all emails for example.com via smtp to the server mail.anotherdomain.com.
example.com smtp:mail.anotherdomain.tld:2025 Delivers all emails for example.com via smtp to the server mail.anotherdomain.com, but on port 2025, not 25 which is the default port for smtp.
example.com smtp:[1.2.3.4]
smtp:[1.2.3.4]:2025
smtp:[mail.anotherdomain.tld]
The square brackets prevent Postfix from doing lookups of the MX DNS record for the address in square brackets. Makes sense for IP addresses.
.example.com smtp:mail.anotherdomain.tld Mail for any subdomain of example.com is delivered to mail.anotherdomain.tld.
* smtp:mail.anotherdomain.tld All emails are delivered to mail.anotherdomain.tld.
joe@example.com smtp:mail.anotherdomain.tld Emails for joe@example.com are delivered to mail.anotherdomain.tld.Siehe

man transport

um mehr zu erfahren.

Bitte denke daran, dass die Reihenfolge der Einträge in der transport Tabelle wichtig ist! Die Einträge schließen sich von oben nach unten an.
Wichtig: Postfix verwendet einen Caching Mechanism für den Transport, daher kann es eine Weile dauern, bis Deine Änderungen in der transport Tabelle übernommen werden. Wenn Du möchtest, dass sie sofort übernommen werden, lass Folgendes laufen

postfix reload

nachdem Du die Änderungen in der transport Tablle vorgenommen hast.

0 Kommentar(e)

Zum Posten von Kommentaren bitte