Postfix Setup · 17 min read · Jan 29, 2026

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

11 Benachrichtigungen bei Quota-Überschreitung

Wenn Sie Benachrichtigungen über alle E-Mail-Konten erhalten möchten, die über dem Limit liegen, erstellen Sie die Datei /usr/local/sbin/quota_notify:

cd /usr/local/sbin/  
vi quota_notify

| #!/usr/bin/perl -w # Autor <[email protected]> # # Dieses Skript geht davon aus, dass virtual_mailbox_base in der main.cf-Datei von Postfix definiert ist. Dieses Verzeichnis wird angenommen, dass es Verzeichnisse enthält, die selbst die Maildirs Ihrer virtuellen Benutzer enthalten. Zum Beispiel: # # -----------/ # | # | # home/vmail/domains/ # | | # | | # example.com/ foo.com/ # | # | # ----------------- # | | | # | | | # user1/ user2/ user3/ # | # | # maildirsize # use strict; my $POSTFIX_CF = "/etc/postfix/main.cf"; my $MAILPROG = "/usr/sbin/sendmail -t"; my $WARNPERCENT = 80; my @POSTMASTERS = ('[email protected]'); my $CONAME = 'Mein Unternehmen'; my $COADDR = '[email protected]'; my $SUADDR = '[email protected]'; my $MAIL_REPORT = 1; my $MAIL_WARNING = 1; #get virtual mailbox base from postfix config open(PCF, "< $POSTFIX_CF") or die $!; my $mboxBase; while () { next unless /virtual_mailbox_base\s*=\s*(.*)\s*/; $mboxBase = $1; } close(PCF); #assume one level of subdirectories for domain names my @domains; opendir(DIR, $mboxBase) or die $!; while (defined(my $name = readdir(DIR))) { next if $name =~ /^\.\.\$/; #skip '.' and '..' next unless (-d "$mboxBase/$name"); push(@domains, $name); } closedir(DIR); #iterate through domains for username/maildirsize files my @users; chdir($mboxBase); foreach my $domain (@domains) { opendir(DIR, $domain) or die $!; while (defined(my $name = readdir(DIR))) { next if $name =~ /^\.\.\$/; #skip '.' and '..' next unless (-d "$domain/$name"); push(@users, {"$name\@$domain" => "$mboxBase/$domain/$name"}); } } closedir(DIR); #get user quotas and percent used my (%lusers, $report); foreach my $href (@users) { foreach my $user (keys %$href) { my $quotafile = "$href->{$user}/maildirsize"; next unless (-f $quotafile); open(QF, "< $quotafile") or die $!; my ($firstln, $quota, $used); while () { my $line = $_; if (! $firstln) { $firstln = 1; die "Fehler: beschädigte quotafile $quotafile" unless ($line =~ /^(\\d+)S/); $quota = $1; last if (! $quota); next; } die "Fehler: beschädigte quotafile $quotafile" unless ($line =~ /\s*(-?\d+)/); $used += $1; } close(QF); next if (! $used); my $percent = int($used / $quota * 100); $lusers{$user} = $percent unless not $percent; } } #send a report to the postmasters if ($MAIL_REPORT) { open(MAIL, "| $MAILPROG"); select(MAIL); map {print "To: $_\n"} @POSTMASTERS; print "From: $COADDR\n"; print "Subject: Täglicher Quota-Bericht.\n"; print "TÄGLICHER QUOTA-BERICHT:\n\n"; print "----------------------------------------------\n"; print "| % NUTZUNG | KONTONAME |\n"; print "----------------------------------------------\n"; foreach my $luser ( sort { $lusers{$b} <=> $lusers{$a} } keys %lusers ) { printf("| %3d | %32s |\n", $lusers{$luser}, $luser); print "---------------------------------------------\n"; } print "\n--\n"; print "$CONAME\n"; close(MAIL); } #email a warning to people over quota if ($MAIL_WARNING) { foreach my $luser (keys (%lusers)) { next unless $lusers{$luser} >= $WARNPERCENT; # skip those under quota open(MAIL, "| $MAILPROG"); select(MAIL); print "To: $luser\n"; map {print "BCC: $_\n"} @POSTMASTERS; print "From: $SUADDR\n"; print "Subject: WARNUNG: Ihr Postfach ist $lusers{$luser}% voll.\n"; print "Reply-to: $SUADDR\n"; print "Ihr Postfach: $luser ist $lusers{$luser}% voll.\n\n"; print "Sobald Ihr E-Mail-Postfach Ihr monatliches Speicherlimit überschreitet\n"; print "wird Ihre monatliche Abrechnung automatisch angepasst.\n"; print "Bitte ziehen Sie in Betracht, E-Mails zu löschen und Ihren Papierkorb zu leeren, um Platz zu schaffen.\n\n"; print "Kontaktieren Sie <$SUADDR> für weitere Unterstützung.\n\n"; print "Danke.\n\n"; print "--\n"; print "$CONAME\n"; close(MAIL); } } |

Stellen Sie sicher, dass Sie die Variablen oben anpassen (insbesondere die [email protected] E-Mail-Adresse).

Wir müssen die Datei ausführbar machen:

chmod 755 quota_notify

Führen Sie

crontab -e

aus, um einen Cron-Job für dieses Skript zu erstellen:

| 0 0 * * * /usr/local/sbin/quota_notify &> /dev/null |

12 Testen von Postfix

Um zu sehen, ob Postfix bereit für SMTP-AUTH und TLS ist, führen Sie aus

telnet localhost 25

Nachdem Sie die Verbindung zu Ihrem Postfix-Mailserver hergestellt haben, geben Sie ein

ehlo localhost

Wenn Sie die Zeilen sehen

250-STARTTLS

und

250-AUTH PLAIN LOGIN

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 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:/usr/local/sbin#

Geben Sie

quit

ein, um zur System-Shell zurückzukehren.

13 Füllen Sie die Datenbank und testen Sie

Um die Datenbank zu füllen, können Sie die MySQL-Shell verwenden:

mysql -u root -p
USE mail;

Mindestens müssen Sie Einträge in den Tabellen domains und users erstellen:

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

(Bitte beachten Sie, dass Sie die ENCRYPT-Syntax im zweiten INSERT-Befehl verwenden, um das Passwort zu verschlüsseln!)

Wenn Sie Einträge in den anderen beiden Tabellen vornehmen möchten, würde das so aussehen:

INSERT INTO `forwardings` (`source`, `destination`) VALUES ('[email protected]', '[email protected]');  
INSERT INTO `transport` (`domain`, `transport`) VALUES ('example.com', 'smtp:mail.example.com');

Um die MySQL-Shell zu verlassen, geben Sie ein

quit;

Für die meisten Menschen ist es einfacher, wenn sie eine grafische Benutzeroberfläche für MySQL haben; daher können Sie auch phpMyAdmin verwenden (in diesem Beispiel unter http://192.168.0.100/phpmyadmin/ oder http://server1.example.com/phpmyadmin/), um die mail-Datenbank zu verwalten. Wiederum, wenn Sie einen Benutzer erstellen, stellen Sie sicher, dass Sie die ENCRYPT-Funktion verwenden, um das Passwort zu verschlüsseln:

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

Die Tabelle forwardings kann Einträge wie die folgenden haben:

sourcedestination
[email protected][email protected]Leitet E-Mails für [email protected] an [email protected] weiter
@example.com[email protected]Erstellt ein Catch-All-Konto für [email protected]. Alle E-Mails an example.com werden an [email protected] gesendet, außer denen, die in der Benutzertabelle existieren (d.h. wenn [email protected] in der Benutzertabelle existiert, werden E-Mails an [email protected] weiterhin an [email protected] gesendet).
@example.com@anotherdomain.tldDies leitet alle E-Mails an example.com an denselben Benutzer bei anotherdomain.tld weiter. Z.B. werden E-Mails an [email protected] an [email protected] weitergeleitet.
[email protected][email protected], [email protected]Leitet E-Mails für [email protected] an zwei oder mehr E-Mail-Adressen weiter. Alle aufgeführten E-Mail-Adressen unter dem Ziel erhalten eine Kopie der E-Mail.

Die Tabelle transport kann Einträge wie diese haben:

domaintransport
example.com:Liefert E-Mails für example.com lokal. Das ist so, als ob dieser Eintrag in dieser Tabelle überhaupt nicht existieren würde.
example.comsmtp:mail.anotherdomain.tldLiefert alle E-Mails für example.com über smtp an den Server mail.anotherdomain.com.
example.comsmtp:mail.anotherdomain.tld:2025Liefert alle E-Mails für example.com über smtp an den Server mail.anotherdomain.com, jedoch auf Port 2025, nicht 25, was der Standardport für smtp ist.

| example.com | smtp:[1.2.3.4]
smtp:[1.2.3.4]:2025
smtp:[mail.anotherdomain.tld] | Die eckigen Klammern verhindern, dass Postfix nach dem MX-DNS-Eintrag für die Adresse in eckigen Klammern sucht. Macht Sinn für IP-Adressen. | | .example.com | smtp:mail.anotherdomain.tld | Mail für jede Subdomain von example.com wird an mail.anotherdomain.tld geliefert. | | * | smtp:mail.anotherdomain.tld | Alle E-Mails werden an mail.anotherdomain.tld geliefert. | | [email protected] | smtp:mail.anotherdomain.tld | E-Mails für [email protected] werden an mail.anotherdomain.tld geliefert. |

Siehe

man transport

für weitere Details.

Bitte beachten Sie, dass die Reihenfolge der Einträge in der Tabelle transport wichtig ist! Die Einträge werden von oben nach unten abgearbeitet.

Wichtig: Postfix verwendet einen Cache-Mechanismus für die Transports, daher kann es eine Weile dauern, bis Änderungen in der Transporttabelle wirksam werden. Wenn Sie möchten, dass sie sofort wirksam werden, führen Sie

postfix reload

aus, nachdem Sie Ihre Änderungen in der Transporttabelle vorgenommen haben.

14 Senden Sie eine Willkommens-E-Mail zur Erstellung von Maildir

Wenn Sie ein neues E-Mail-Konto erstellen und versuchen, E-Mails von diesem abzurufen (mit POP3/IMAP), erhalten Sie wahrscheinlich Fehlermeldungen, dass das Maildir nicht existiert. Das Maildir wird automatisch erstellt, wenn die erste E-Mail für das neue Konto eintrifft. Daher ist es eine gute Idee, eine Willkommens-E-Mail an ein neues Konto zu senden.

Zuerst installieren wir das mailx-Paket:

apt-get install mailutils

Um eine Willkommens-E-Mail an [email protected] zu senden, tun wir dies:

mailx [email protected]

Sie werden nach dem Betreff gefragt. Geben Sie den Betreff ein (z.B. Willkommen), drücken Sie dann ENTER, und geben Sie in der nächsten Zeile Ihre Nachricht ein. Wenn die Nachricht fertig ist, drücken Sie erneut ENTER, sodass Sie in einer neuen Zeile sind, und drücken Sie dann CTRL+D; wenn Sie die E-Mail nicht cc möchten, drücken Sie erneut ENTER:

root@server1:/usr/local/sbin# mailx [email protected]
Cc: <– ENTER
Subject: Willkommen <– ENTER
Willkommen! Viel Spaß mit Ihrem neuen E-Mail-Konto. <– ENTER
<– CTRL+D
root@server1:/usr/local/sbin#

Hinweis: Bitte fügen Sie keinen Transport und kein Postfach für dieselbe Adresse hinzu.

15 Installation von SquirrelMail

SquirrelMail ist eine Webmail-Oberfläche, die es Ihren Benutzern ermöglicht, E-Mails in einem Browser zu senden und zu empfangen. Dieses Kapitel zeigt, wie man es installiert und an unser Setup anpasst, sodass Benutzer sogar ihr E-Mail-Konto-Passwort über die SquirrelMail-Oberfläche ändern können.

Um SquirrelMail zu installieren, führen wir aus:

apt-get install squirrelmail squirrelmail-compatibility php-pear php-db

Als nächstes verlinken wir die Apache-Konfiguration, die mit dem SquirrelMail-Paket geliefert wird, in das Verzeichnis /etc/apache2/conf-available und starten Apache neu:

ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf-available/squirrelmail.conf  
/etc/init.d/apache2 restart

SquirrelMail wird mit einigen vorinstallierten Plugins geliefert, leider kann keines von ihnen es uns ermöglichen, unser E-Mail-Passwort in unserer MySQL-Datenbank zu ändern. Aber es gibt das Change SQL Password-Plugin, das wir manuell installieren können:

cd /usr/share/squirrelmail/plugins  
wget http://www.squirrelmail.org/plugins/change_sqlpass-3.3-1.2.tar.gz  
tar xvfz change_sqlpass-3.3-1.2.tar.gz  
cd change_sqlpass  
cp config.php.sample config.php

Jetzt müssen wir config.php bearbeiten und an unser Setup anpassen. Bitte passen Sie die Variablen $csp_dsn, $lookup_password_query, $password_update_queries, $password_encryption, $csp_salt_static und $csp_delimiter wie folgt an und kommentieren Sie $csp_salt_query aus:

vi config.php

| [...] $csp_dsn = 'mysql://mail_admin:mail_admin_password@localhost/mail'; [...] $lookup_password_query = 'SELECT count(*) FROM users WHERE email = "%1" AND password = %4'; [...] $password_update_queries = array('UPDATE users SET password = %4 WHERE email = "%1"'); [...] $password_encryption = 'MYSQLENCRYPT'; [...] $csp_salt_static = 'LEFT(password, 2)'; [...] //$csp_salt_query = 'SELECT salt FROM users WHERE username = "%1"'; [...] $csp_delimiter = '@'; [...] |

Die vollständige Datei sieht wie folgt aus:

| * 2002-2005 Paul Lesneiwski <[email protected]> * Dieses Programm ist lizenziert unter GPL. Siehe COPYING für Details * * @package plugins * @subpackage Change SQL Password * */ // Globale Variablen, fassen Sie diese nicht an, es sei denn, Sie möchten das Plugin beschädigen // global $csp_dsn, $password_update_queries, $lookup_password_query, $force_change_password_check_query, $password_encryption, $csp_salt_query, $csp_salt_static, $csp_secure_port, $csp_non_standard_http_port, $csp_delimiter, $csp_debug, $min_password_length, $max_password_length, $include_digit_in_password, $include_uppercase_letter_in_password, $include_lowercase_letter_in_password, $include_nonalphanumeric_in_password; // csp_dsn // // Theoretisch sollte jede von Pear unterstützte SQL-Datenbank hier unterstützt werden. // Der DSN (Data Source Name) muss die Informationen enthalten, die benötigt werden, // um eine Verbindung zu Ihrem Datenbank-Backend herzustellen. Ein MySQL-Beispiel ist unten enthalten. // Für weitere Details zur DSN-Syntax und zur Liste der unterstützten Datenbanktypen, // siehe: // http://pear.php.net/manual/en/package.database.db.intro-dsn.php // //$csp_dsn = 'mysql://user:password@localhost/email_users'; $csp_dsn = 'mysql://mail_admin:mail_admin_password@localhost/mail'; // lookup_password_query // // Dieses Plugin überprüft immer das alte Passwort des Benutzers // gegen ihr Anmeldepasswort, aber eine zusätzliche Überprüfung kann auch // gegen die Datenbank für mehr Sicherheit durchgeführt werden, wenn Sie // dies wünschen. Wenn Sie die zusätzliche Passwortüberprüfung nicht benötigen, // stellen Sie sicher, dass diese Einstellung leer ist. // // Dies ist eine Abfrage, die einen positiven Wert zurückgibt, wenn ein Benutzer // und Passwortpaar in der Datenbank gefunden wird. // // Diese Abfrage sollte einen Wert zurückgeben (eine Zeile, eine Spalte), der // idealerweise eine Eins oder eine Null ist, die einfach angibt, dass // das Benutzer-/Passwortpaar tatsächlich in der Datenbank existiert. // // %1 in dieser Abfrage wird durch den vollständigen Benutzernamen ersetzt // (einschließlich Domain), wie z.B. "[email protected]" // %2 in dieser Abfrage wird durch den Benutzernamen (ohne // jeglichen Domainanteil) ersetzt, wie "jose" // %3 in dieser Abfrage wird durch den Domainnamen ersetzt, // wie "example.com" // %4 in dieser Abfrage wird durch das aktuelle (alte) // Passwort in welchem Verschlüsselungsformat auch immer benötigt wird, gemäß den Einstellungen anderer // Plugin-Konfigurationen (Beachten Sie, dass die Syntax des // Passworts je nach Ihren Verschlüsselungsentscheidungen bereitgestellt wird, sodass Sie NIE // Anführungszeichen um diesen Wert in der Abfrage hier bereitstellen müssen.) // %5 in dieser Abfrage wird durch das aktuelle (alte) // Passwort im unverschlüsselten Klartext ersetzt. Wenn Sie keine // Passwortverschlüsselung verwenden, sind %4 und %5 die gleichen Werte, // außer dass %4 Anführungszeichen darum hat und %5 nicht. // //$lookup_password_query = ''; // SCHLECHTE SICHERHEIT: $lookup_password_query = 'SELECT count(*) FROM users WHERE username = "%1" AND plain_password = "%5"'; //$lookup_password_query = 'SELECT count(*) FROM users WHERE username = "%1" AND crypt_password = %4'; $lookup_password_query = 'SELECT count(*) FROM users WHERE email = "%1" AND password = %4'; // password_update_queries // // Ein Array von SQL-Abfragen, die alle ausgeführt werden, // wann immer ein Passwortänderungsversuch unternommen wird. // // Hier können beliebig viele Abfragen enthalten sein. // Die Abfragen werden in der angegebenen Reihenfolge ausgeführt. // // %1 in allen Abfragen wird durch den vollständigen Benutzernamen ersetzt // (einschließlich Domain), wie z.B. "[email protected]" // %2 in allen Abfragen wird durch den Benutzernamen (ohne // jeglichen Domainanteil) ersetzt, wie "jose" // %3 in allen Abfragen wird durch den Domainnamen ersetzt, // wie "example.com" // %4 in allen Abfragen wird durch das neue Passwort // in welchem Verschlüsselungsformat auch immer benötigt wird, gemäß den Einstellungen anderer // Plugin-Konfigurationen (Beachten Sie, dass die Syntax des // Passworts je nach Ihren // Verschlüsselungsentscheidungen bereitgestellt wird, sodass Sie NIE Anführungszeichen // um diesen Wert in den Abfragen hier bereitstellen müssen.) // %5 in allen Abfragen wird durch das neue Passwort // im unverschlüsselten Klartext ersetzt - VORSICHT! Wenn Sie keine // Passwortverschlüsselung verwenden, sind %4 und %5 die gleichen // Werte, außer dass %4 Anführungszeichen darum hat // und %5 nicht. // //$password_update_queries = array( // 'UPDATE users SET crypt_password = %4 WHERE username = "%1"', // 'UPDATE user_flags SET force_change_pwd = 0 WHERE username = "%1"', // 'UPDATE users SET crypt_password = %4, force_change_pwd = 0 WHERE username = "%1"', // ); $password_update_queries = array('UPDATE users SET password = %4 WHERE email = "%1"'); // force_change_password_check_query // // Eine Abfrage, die nach einem Flag überprüft, das angibt, ob ein Benutzer // gezwungen werden sollte, sein Passwort zu ändern. Diese Abfrage // sollte einen Wert zurückgeben (eine Zeile, eine Spalte), der // null ist, wenn der Benutzer sein Passwort NICHT ändern muss, // oder eins, wenn der Benutzer gezwungen werden sollte, es jetzt zu ändern. // // Diese Einstellung sollte eine leere Zeichenfolge sein, wenn Sie diese Funktionalität nicht aktivieren möchten. // // %1 in dieser Abfrage wird durch den vollständigen Benutzernamen ersetzt // (einschließlich Domain), wie z.B. "[email protected]" // %2 in dieser Abfrage wird durch den Benutzernamen (ohne // jeglichen Domainanteil) ersetzt, wie "jose" // %3 in dieser Abfrage wird durch den Domainnamen ersetzt, // wie "example.com" // //$force_change_password_check_query = 'SELECT IF(force_change_pwd = "yes", 1, 0) FROM users WHERE username = "%1"'; //$force_change_password_check_query = 'SELECT force_change_pwd FROM users WHERE username = "%1"'; $force_change_password_check_query = ''; // password_encryption // // Welche Verschlüsselungsmethode verwenden Sie, um Passwörter // in Ihrer Datenbank zu speichern? Bitte verwenden Sie eine der folgenden, // genau so, wie Sie sie sehen: // // NONE Passwörter werden nur im Klartext gespeichert // MYSQLPWD Passwörter werden mit der MySQL password()-Funktion gespeichert // MYSQLENCRYPT Passwörter werden mit der MySQL encrypt()-Funktion gespeichert // PHPCRYPT Passwörter werden mit der PHP crypt()-Funktion gespeichert // MD5CRYPT Passwörter werden mit dem verschlüsselten MD5-Algorithmus gespeichert // MD5 Passwörter werden als MD5-Hash gespeichert // //$password_encryption = 'MYSQLPWD'; $password_encryption = 'MYSQLENCRYPT'; // csp_salt_query // csp_salt_static // // Verschlüsselungstypen, die ein Salt benötigen, müssen wissen, wo sie // dieses Salt erhalten. Wenn Sie einen konstanten, bekannten Saltwert haben, sollten Sie // ihn in $csp_salt_static definieren. Andernfalls lassen Sie diesen // Wert leer und definieren Sie einen Wert für die $csp_salt_query. // // Lassen Sie beide Werte leer, wenn Sie keine (oder verwenden) Salze // zur Verschlüsselung Ihrer Passwörter benötigen. // // Die Abfrage sollte einen Wert zurückgeben (eine Zeile, eine Spalte), der // der Saltwert für das Passwort des aktuellen Benutzers ist. Diese // Abfrage wird ignoriert, wenn $csp_salt_static etwas anderes als leer ist. // // %1 in dieser Abfrage wird durch den vollständigen Benutzernamen ersetzt // (einschließlich Domain), wie z.B. "[email protected]" // %2 in dieser Abfrage wird durch den Benutzernamen (ohne // jeglichen Domainanteil) ersetzt, wie "jose" // %3 in dieser Abfrage wird durch den Domainnamen ersetzt, // wie "example.com" // //$csp_salt_static = 'LEFT(crypt_password, 2)'; //$csp_salt_static = '"a4"'; // verwenden Sie dieses Format mit MYSQLENCRYPT //$csp_salt_static = '$2$blowsomefish$'; // verwenden Sie dieses Format mit PHPCRYPT //$csp_salt_static = ''; $csp_salt_static = 'LEFT(password, 2)'; //$csp_salt_query = 'SELECT SUBSTRING_INDEX(crypt_password, '$', 1) FROM users WHERE username = "%1"'; //$csp_salt_query = 'SELECT SUBSTRING(crypt_password, (LENGTH(SUBSTRING_INDEX(crypt_password, '$', 2)) + 2)) FROM users WHERE username = "%1"'; //$csp_salt_query = 'SELECT salt FROM users WHERE username = "%1"'; //$csp_salt_query = ''; // csp_secure_port // // Sie können sicherstellen, dass SSL-Verschlüsselung während der Passwortänderung // verwendet wird, indem Sie dies auf den Port setzen, auf dem Ihr HTTPS bereitgestellt wird // (443 ist typisch). Setzen Sie es auf null, wenn Sie keine // HTTPS-Verbindung erzwingen möchten, wenn Benutzer ihre Passwörter ändern. // // Sie können diesen Wert für bestimmte Domains, Benutzer oder // Dienstebenen über das Virtual Host Login (vlogin)-Plugin // überschreiben, indem Sie einen Wert(e) für $vlogin_csp_secure_port in der vlogin // Konfiguration festlegen. // $csp_secure_port = 0; //$csp_secure_port = 443; // csp_non_standard_http_port // // Wenn Sie Standard-HTTP-Webanfragen auf einem nicht-standardisierten // Port (alles andere als Port 80) bereitstellen, sollten Sie diese // Portnummer hier angeben. Setzen Sie es auf null, andernfalls. // // Sie können diesen Wert für bestimmte Domains, Benutzer oder // Dienstebenen über das Virtual Host Login (vlogin)-Plugin // überschreiben, indem Sie einen Wert(e) für $vlogin_csp_non_standard_http_port // in der vlogin-Konfiguration festlegen. // //$csp_non_standard_http_port = 8080; $csp_non_standard_http_port = 0; // min_password_length // max_password_length // include_digit_in_password // include_uppercase_letter_in_password // include_lowercase_letter_in_password // include_nonalphanumeric_in_password // // Sie können die minimale und maximale Passwortlänge festlegen, die // Sie akzeptieren oder diese Einstellungen auf null lassen, um anzuzeigen, dass // kein Limit angewendet werden sollte. // // Aktivieren Sie eine der anderen Einstellungen hier, um zu überprüfen, dass das // neue Passwort mindestens eine Ziffer, einen Großbuchstaben, // einen Kleinbuchstaben und/oder ein nicht-alphanumerisches Zeichen enthält. // $min_password_length = 6; $max_password_length = 0; $include_digit_in_password = 0; $include_uppercase_letter_in_password = 0; $include_lowercase_letter_in_password = 0; $include_nonalphanumeric_in_password = 0; // csp_delimiter // // wenn Ihr System Benutzernamen mit etwas anderem als // einem "@"-Zeichen hat, das den Benutzer- und Domainanteil trennt, // geben Sie dieses Zeichen hier an // //$csp_delimiter = '|'; $csp_delimiter = '@'; // Debug-Modus // $csp_debug = 0; ?> |

Jetzt müssen wir in die SquirrelMail-Konfiguration gehen und SquirrelMail mitteilen, dass wir Courier als unseren POP3- und IMAP-Server verwenden und die Plugins Change SQL Password und Compatibility aktivieren:

/usr/sbin/squirrelmail-configure

Sie sehen das folgende Menü. Navigieren Sie durch es, wie angegeben:

SquirrelMail Konfiguration : Gelesen: config.php (1.4.0)

Hauptmenü –
1.  Organisationspräferenzen
2.  Servereinstellungen
3.  Ordnerstandards
4.  Allgemeine Optionen
5.  Themen
6.  Adressbücher
7.  Nachricht des Tages (MOTD)
8.  Plugins
9.  Datenbank
10. Sprachen

D.  Vordefinierte Einstellungen für spezifische IMAP-Server festlegen

C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >> <– D

SquirrelMail Konfiguration : Gelesen: config.php

Während wir SquirrelMail aufgebaut haben, haben wir einige Präferenzen entdeckt, die besser mit einigen Servern funktionieren, die nicht so gut mit anderen funktionieren.  Wenn Sie Ihren IMAP-Server auswählen, wird diese Option einige vordefinierte Einstellungen für diesen Server festlegen.

Bitte beachten Sie, dass Sie trotzdem alles überprüfen müssen, um sicherzustellen, dass alles korrekt ist.  Das ändert nicht alles.  Es gibt nur einige Einstellungen, die dies ändern wird.

Bitte wählen Sie Ihren IMAP-Server:
bincimap    = Binc IMAP-Server
courier     = Courier IMAP-Server
cyrus       = Cyrus IMAP-Server
dovecot     = Dovecot Secure IMAP-Server
exchange    = Microsoft Exchange IMAP-Server
hmailserver = hMailServer
macosx      = Mac OS X Mailserver
mercury32   = Mercury/32
uw          = IMAP-Server der Universität von Washington
gmail       = IMAP-Zugriff auf Google Mail (Gmail)-Konten

quit        = Nichts ändern
Befehl >> <– courier

imap_server_type = courier
default_folder_prefix = INBOX.
trash_folder = Papierkorb
sent_folder = Gesendet
draft_folder = Entwürfe
show_prefix_option = false
default_sub_of_inbox = false
show_contain_subfolders_option = false
optional_delimiter = .
delete_folder = true

Drücken Sie ENTER, um fortzufahren… <– drücken Sie ENTER

SquirrelMail Konfiguration : Gelesen: config.php (1.4.0)

Hauptmenü –
1.  Organisationspräferenzen
2.  Servereinstellungen
3.  Ordnerstandards
4.  Allgemeine Optionen
5.  Themen
6.  Adressbücher
7.  Nachricht des Tages (MOTD)
8.  Plugins
9.  Datenbank
10. Sprachen

D.  Vordefinierte Einstellungen für spezifische IMAP-Server festlegen

C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >> <– 8

SquirrelMail Konfiguration : Gelesen: config.php (1.4.0)

Plugins
Installierte Plugins
1. view_as_html

Verfügbare Plugins:
2. administrator
3. bug_report
4. calendar
5. change_sqlpass
6. compatibility
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate

R   Zurück zum Hauptmenü
C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >> <– 6 (oder welche Nummer das Kompatibilitätsplugin hat - es wird vom change_sqlpass-Plugin benötigt)

SquirrelMail Konfiguration : Gelesen: config.php (1.4.0)

Plugins
Installierte Plugins
1. view_as_html
2. compatibility

Verfügbare Plugins:
3. administrator
4. bug_report
5. calendar
6. change_sqlpass
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate

R   Zurück zum Hauptmenü
C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >> <– 6 (die Nummer des change_sqlpass-Plugins)

SquirrelMail Konfiguration : Gelesen: config.php (1.4.0)

Plugins
Installierte Plugins
1. view_as_html
2. compatibility
3. change_sqlpass

Verfügbare Plugins:
4. administrator
5. bug_report
6. calendar
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate

R   Zurück zum Hauptmenü
C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >> S

SquirrelMail Konfiguration : Gelesen: config.php (1.4.0)

Plugins
Installierte Plugins
1. view_as_html
2. compatibility
3. change_sqlpass

Verfügbare Plugins:
4. administrator
5. bug_report
6. calendar
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate

R   Zurück zum Hauptmenü
C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >> S

Daten in config.php gespeichert
Drücken Sie ENTER, um fortzufahren… <– drücken Sie ENTER

SquirrelMail Konfiguration : Gelesen: config.php (1.4.0)

Plugins
Installierte Plugins
1. view_as_html
2. compatibility
3. change_sqlpass

Verfügbare Plugins:
4. administrator
5. bug_report
6. calendar
7. delete_move_next
8. demo
9. filters
10. fortune
11. info
12. listcommands
13. mail_fetch
14. message_details
15. newmail
16. sent_subfolders
17. spamcop
18. squirrelspell
19. test
20. translate

R   Zurück zum Hauptmenü
C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >> <– Q

Jetzt müssen wir SquirrelMail wie folgt aktivieren:

a2enconf squirrelmail  
service apache2 reload

Jetzt können Sie http://server1.example.com/squirrelmail oder http://192.168.0.100/squirrelmail in Ihrem Browser eingeben, um auf SquirrelMail zuzugreifen.

Melden Sie sich mit Ihrer E-Mail-Adresse (z.B. [email protected]) und Ihrem Passwort an:

Sie sollten die Willkommens-E-Mail in Ihrem Posteingang finden:

Um Ihr Passwort zu ändern, gehen Sie zu Optionen und wählen Sie dann Passwort ändern:

Geben Sie Ihr aktuelles Passwort und dann Ihr neues Passwort zweimal ein:

Wenn das Passwort erfolgreich geändert wurde, sehen Sie die folgende Fehlermeldung, was bedeutet, dass Sie sich erneut mit Ihrem neuen Passwort anmelden müssen (da das alte nicht mehr aktiv ist):

17 Referenzen

18 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.