PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Postfix (Virtual Domains) und Auslieferung an Cyrus



donnerzusel
05.04.2006, 13:24
Schönen guten Tag,

(ich hoffe, daß das hier der richtige Bereich ist, zumindest schien er mir schlüssig...)

Ich hab einen Knoten im Linuxhirn: Wenn ich mit Postfix mehrere Virtual Mailbox-Domains aufbauen würde, und alle Mails über IMAP/POP3 abrufbar sein sollen, wie ordnet Postfix die Mails den "Cyrus"-Accounts zu? Legt man die Postfächer in Cyrus mit der vollen eMail-Adresse an (also user@vdomain.tld)?

Oder wird das über virtual_transport-maps gemacht?
Oder ordnet man jeder virtuellen Mailbox-Domain einen eigenen Cyrus-LMTP-Socket zu (das bedeutet ja auch, daß man pro Domain eine Cyrus-Instanz hat)?

Vielen Dank schonmal! :)

pcp
14.04.2006, 00:02
Hallo,

ich habe nun auch gerade nach vier Tagen harter Arbeit verstanden wie so ein Mailserver funktioniert.

Ich habe einige Tipps für dich:

Erstmal möchte ich erläutern was ich verwende:

Debian 3.1 (Sarge)

Postfix + SASL + Cyrus (viele Howtos gehen auf MySQL ein doch dies kommt bei mir nicht zum Einsatz)


Installieret Pakete:
postfix postfix-tls
libsasl2 libsasl2-modul sasl2-bin
cyrus21-common cyrus21-imapd cyrus21-pop3 cyrus21-admin

1. Postfix

Änderungen an der main.cf (Dies ist nicht die Komplette Datei & bitte Variablen anpassen):

myhostname = hostname.domain.tld
mydomain = domain.tld

# Konfiguration der virtuellen Mailboxen und User
#
# Fuer welche Domains und User nehmen wir E-Mails an
virtual_maps = hash:/etc/postfix/virtualUsers, hash:/etc/postfix/localDomains
# LMTP / Die Uebergabe an Cyrus
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
# Wer darf Mails verschicken
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination

master.cf (bei folgender Zeile muss das chroot deaktiviert werden damit es mit SASL sprechen kann):

# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ================================================== =======================
smtp inet n - n - - smtpd

Rechte auf Dateien/ Gruppenzugehörigkeiten:

/etc/group:

mail:x:8:postfix,cyrus
sasl:x:45:postfix,cyrus

/etc/posftix/sasl/smtp.conf

pwcheck_method: saslauthd
mech_list: LOGIN PLAIN
# Log Level von 0-7
log_level:1

/etc/postfix/localDomains (siehe main.cf):

# /etc/postfix/localDomains
domain.tld hostname.domain.tld
example.com hostname.domain.tld
example.net hostname.domain.tld


und ein postmap erstellt den hash (*.db) [man sollte sich hierzu in /etc/postfix/ befinden da sonst der pfad nicht stimmt:

root@host # postmap localDomains


/etc/postfix/virtualUsers:

# /etc/postfix/virtualUsers
# E-Mail-Adressen der Domain domain.tld
# E-Mail-Adresse Zuordnung Cyrus Postfach
hans@domain.tld domainp1
hans.meyer@domain.tld domainp1
fritz.kunz@domain.tld domainp2
# Forwarding (E-Mails werden an die Zugeordnete Adresse geleitet)
meyer@domain.tld test@example.org
# E-Mail-Adressen der Domain example.com
# E-Mail-Adresse Zuordnung Cyrus Postfach
juergen.korn@example.com examplep1
hannes@example.com examplep2
# Forwarding (E-Mails werden an die Zugeordnete Adresse geleitet)
anna@example .com annette@example.org

wieder ein postmap:

root@host # postmap localDomains


2. SASL:

/etc/default/saslauthd:

# SASL soll gestartet werden
START=yes
# Authentifizierungsmechanismus
MECHANISMS="sasldb pam"


User anlegen:

root@host # saslpasswd2 -c domainp1

User löschen:

saslpasswd2 -d domainp1

User anzeigen:

sasldblistusers2

Passwort ändern:

saslpasswd2 domainp1

Passwort prüfen/ Datenbank prüfen:

testsaslauthd -u domainp1 -p passwort -s smtp


3. Cyrus:

Cyrus Passwort zur Administration setzen:

root@host # passwd cyrus

Cyrus in der SASL-Datenbank anlegen:
root@host # saslpasswd2 -c cyrus

/etc/imapd.conf:

admins: cyrus

Cyrus neustarten:
root@host # /etc/init.d/cyrus21 restart

Auf die Cyrus Konsole einloggen:
root@host # cyradm -u cyrus localhost

Anlegen von Mailboxen:
localhost.localdomain> cm user.domainp1

Löschen von Mailboxen:
localhost> sam user.domainp1 cyrus all
localhost> dm user.domainp1
sam = set ACLs on mailbox
user.domainp1 = Mailbox
cyrus = unser User cyrus der die administrative Arbeit vornimmt
all = alle Rechte

4. Alles neu starten:

root@host # /etc/init.d/saslauthd restart
root@host # /etc/init.d/postfix restart
root@host # /etc/init.d/cyrus21 restart

5. MailClient:

Als Name: Eigener Name
(wir nur verwendet um anzuzeigen von wem die Mail ist)
E-Mail-Adresse: user@domain.tl
Abrufen von Mails
POP3
Protokol: POP oder POP3
Server: name des Servers
(z. B. mail.domain.tld)
Benutername: Zuordung der Mailadresse (das Postfach) z. B. domainp1
IMAP
Protokol: IMAP
Server: name des Servers
(z. B. mail.domain.tld)
Benutername: Zuordung der Mailadresse (das Postfach) z. B. domainp1
Verschicken von Mails
Protokolle: SMTP
Server: name des Servers
(z. B. mail.domain.tld)
Benutername: Zuordung der Mailadresse (das Postfach) z. B. domainp1


Ich hoffe dies hilft. Falls du dies nicht so ganz verstehts (das Thema ist auch sehr komplex/ weiß nicht ob ich alle wichtigen Teile meiner fast 10 Seitigen Doku rauskopiert habe).

Falls es noch zu Problemen kommt schau ich mal ob ich meine Doku als PDF oder so hier posten kann.

Tipp:

immer die Logs beobachten:

tail -f /var/log/mail.log

Bitte nicht blind "copy & paste" verwenden sondern nachdenken. Bei Fragen Fragen!

ACID25
23.08.2006, 16:31
Hi

wäre nett wenn du mir dieses howto zukommen lassen könntest bzw. es hier posten könntest?

MfG
ACID25

Skorpurion
02.06.2007, 21:42
Hallo,
müsste man nach dem Anpassen der virtualUsers nicht wie beschrieben
root@host # postmap localDomains
SONDERN

root@host # postmap virtualUsers
ausführen ?

Habe leider kein Test-System da und auf dem produktiv System möchte ich jetzt nicht werkeln.

bitmuncher
03.06.2007, 03:36
Ich persönlich preferiere da ja die Lösung mit MySQL: http://workaround.org/articles/ispmail-sarge/
Da wird dann auch ziemlich klar wie die Mailboxen unterschieden werden, wenn man mal einen Blick in das virtual_mailbox_base wirft. Dort findet sich dann für jede Domain, in der schon ein Account existiert, ein eigener Unterordner und in diesen dann die einzelnen Maildirs der User. Außerdem kann man am Aufbau der MySQL-Tabellen gut erkennen, wie doppelte Account-Namen verhindert werden.

Skorpurion
03.06.2007, 12:48
Hallo,
das werde ich mir auch mal anschauen. Klingt nett, und scheint auch einigermaßen einfach zu sein :).

Gruß