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

11 Quota Überschreitungsbenachrichtigung

Wenn Du Benachrichtigungen bezüglich aller E-Mail Konten erhalten möchtest, die über Quota sind, dann führe dies 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 am Anfang. Weiter unten in der Datei (gegen Ende hin) stehen zwei Zeilen, an die Du ein % Zeichen fügen 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 für dieses Skript einen Cron Job anzulegen:
0 0 * * * /usr/local/sbin/quota_notify &> /dev/null

12 Postfix testen

Um zu überprüfen, ob Postfix für SMTP-AUTH und TLS bereit ist, führe dies aus

telnet localhost 25

Nachdem Du die Verbindung zu Deinem Postfix Mail Server aufgebaut hast, gib Folgendes ein

ehlo localhost

Wenn Du die Zeile

250-STARTTLS

und

250-AUTH LOGIN PLAIN

siehst, ist alles in Ordnung:

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

Gib Folgendes ein

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 zumindest Einträge in der Tabelle domainsuand users erstellen:

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

(Bitte beachte, dass Du den VERSCHLÜSSELUNGS-Syntax im zweiten INSERT Statement verwendest, um das Passwort zu verschlüsseln!)

Wenn Du Einträge in den anderen beiden Tabellen vornehmen würdest, würde das 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, gib Folgendes ein

quit;

Für die meisten Benutzer ist es einfacher, wenn sie ein grafisches Frontend 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/) für die Verwaltung der mail  Datenbank verwenden. Noch mal, wenn Du  einen Benutzer anlegst, denke daran, dass Du die VERSCHLÜSSELUNGS-Funktion verwendest:


Ich glaube, ich muss die Domains- und Benutzertabelle hier nicht weiter erklären.

Die forwardings Tabelle kann Einträge wie folgende 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 diese 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.Sieh Dir Folgendes an

man transport

um mehr zu erfahren.

Bitte denke daran, dass die Reihenfolge der Einträge in der transport Tabelle wichtig ist! Die Reihenfolge erfolgt von oben nach unten.

Wichtig: Postfix verwendet für die Transporte einen Caching Mechanismus, daher kann es eine Weile dauern bis die Änderungen in der transport Tabelle übernommen werden. Wenn Du möchtest, dass sie sofort übernommen werden, dann führe dies aus

postfix reload

nachdem Du Deine Änderungen in der transport Tabelle vorgenommen hast.

14 Sende eine Willkommens-E-Mail um eine Maildir zu erstellen

Wenn Du ein neues E-Mail Konto anlegst und versuchst von da E-Mails abzuholen (mit POP3/IMAP), bekommst Du wahrscheinlich Fehlermeldungen, in denen Dir mitgeteilt wird, dass die Maildir nicht existiert. Die Maildir wird automatisch erstellt wenn die erste Mail im neuen Konto ankommt. Daher macht es sich ganz gut eine Willkommens-Mail an das neue Konto zu senden.

Zuerst installieren wir das mailx Paket:

apt-get install mailx

Um eine Willkommens-Mail an sales@example.com zu senden, führen wir Folgendes aus:

mailx sales@example.com

Du wirst nach dem Betreff gefragt. Gib einen Betreff ein (z.B. Willkommen), drücke dann ENTER und gib in der nächsten Zeile Deine Nachricht ein. Wenn Du die Nachricht geschrieben hast, drücke erneut ENTER damit Du Dich in einer neuen Zeile befindest, drücke dann STRG+D; wenn Du die Cc-Funktion nicht verwenden möchtest, dann drücke erneut ENTER:

root@server1:/usr/local/sbin# mailx sales@example.com
Subject: Welcome <-- ENTER
Welcome! Have fun with your new mail account. <-- ENTER
<-- CTRL+D
Cc: <-- ENTER
root@server1:/usr/local/sbin#

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