Leopard + Postfix + Cyrus-SASL2 + Cyrus-Imap + PAM

X

x11max

Hi,

beschäftige mich seit längerem wieder mit Mailservern unter Leopard und bin auf ein Problem gestossen, wo ich nicht weiterkomme.

Grundsätzlich sind die notwendigen Prozesse gestartet, sprich imapd, cyrus-master und postfix gestartet.

Zum Mailversand habe ich einen Test User mit Namen "user_1" angelegt.

Versende ich nun eine Mail via Mail Client, wird diese auch zugestellt, wie das Protokoll - "status=sent (delivered to maildir)" - zeigt.

In der Konfiguratinsdatei "postfix/main.cf" habe ich als Mailbox-Style Delivery "home_mailbox = Maildir/" definiert. Die versendete Mail wird in "/Users/users_1/Maildir/new" abgelegt.
Analog habe ich auch die Unix Style Variante "home_mailbox = Mailbox" definiert, wobei die versendete Mail in der Mailbox "/var/mail/user_1" abgelegt wird.

Der Mail Client sieht diese versendete Mail jedoch nicht in seiner IMAP-INBOX, weil die Cyrus IMAP-Inbox für "user_1" in "/opt/local/var/spool/imap/user/user_1" liegt.

Grundsätzlich kann ich eine Mail beispielsweise aus dem "Sent" Folder in die IMAP-Inbox ziehen und lesen.

Aber wie bringe ich Cyrus-Imap bei, dass die versendete Email, die je nach Einstellung des Parameters "home_mailbox" entweder in "Maildir" oder in "var/mail" landet, nach dem Emailabruf in der IMAP-Inbox des Benutzers "user_1" abgelegt wird ?

Protokoll:

mail.log:
Jun 12 14:48:25 mac02 postfix/local[1821]: C672B3AA1086: to=<user_1@localhost>, relay=local, delay=0.19, delays=0.03/0.08/0/0.09, dsn=2.0.0, status=sent (delivered to maildir)

SASL authentication zum server:
testsaslauthd -u user_1 -p 1234
0: OK "Success."

IMAP Test mit gelisteten Mailboxen:
imtest -t "" -a user_1 -p imap localhost
S: * OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS] mac02.cronomik.de Cyrus IMAP4 v2.3.8 server ready
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE IDLE LISTEXT LIST-SUBSCRIBED X-NETSCAPE URLAUTH
S: C01 OK
C: S01 STARTTLS
S: S01 OK Begin TLS negotiation now
verify error:num=18:self signed certificate
TLS connection established: TLSv1 with cipher AES256-SHA (256/256 bits)
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID AUTH=PLAIN AUTH=PLAIN AUTH=PLAIN AUTH=LOGIN AUTH=LOGIN AUTH=LOGIN SASL-IR ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE IDLE LISTEXT LIST-SUBSCRIBED X-NETSCAPE URLAUTH
S: C01 OK
Please enter your password:
C: A01 AUTHENTICATE PLAIN AHVzZXJfMQAxMjM0
S: A01 OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID LOGINDISABLED ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE IDLE LISTEXT LIST-SUBSCRIBED X-NETSCAPE URLAUTH] Success (tls protection)
Authenticated.
Security strength factor: 256
01 list "" "*"
* LIST (\Noinferiors) "/" "INBOX"
* LIST (\HasNoChildren) "/" "Apple Mail To Do"
* LIST (\HasNoChildren) "/" "Sent"
* LIST (\HasNoChildren) "/" "Sent Messages"
* LIST (\HasNoChildren) "/" "Trash"
01 OK

postconf -n
command_directory = /opt/local/sbin
config_directory = /opt/local/etc/postfix
daemon_directory = /opt/local/libexec/postfix
data_directory = /opt/local/var/lib/postfix
debug_peer_level = 2
default_privs = nobody
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
mail_owner = _postfix
mailq_path = /opt/local/bin/mailq
manpage_directory = /opt/local/share/man
newaliases_path = /opt/local/bin/newaliases
queue_directory = /opt/local/var/spool/postfix
readme_directory = /opt/local/share/postfix/readme
sample_directory = /opt/local/share/postfix/sample
sendmail_path = /opt/local/sbin/sendmail
setgid_group = _postdrop
unknown_local_recipient_reject_code = 550

Cyrus IMAP-MailBox für "user_1: "/opt/local/var/spool/imap/user/user_1"

Inbox Verzeichnis ist leer, sonst würde hier eine "1. 2. 3. ff" für die Mails stehen.
61474599 0 drwx------ 12 _cyrus mail 408 Jun 12 16:18 .
60614652 0 drwx------ 3 _cyrus mail 102 Jun 12 13:46 ..
61478050 0 drwx------ 5 _cyrus mail 170 Jun 12 15:57 Apple Mail To Do
61476332 0 drwx------ 5 _cyrus mail 170 Jun 12 15:57 Maildir
61475129 0 drwx------ 9 _cyrus mail 306 Jun 12 15:57 Sent
61477000 0 drwx------ 6 _cyrus mail 204 Jun 12 15:42 Sent Messages
61475102 0 drwx------ 5 _cyrus mail 170 Jun 12 15:57 Trash
61479034 8 -rw------- 1 _cyrus mail 900 Jun 12 15:42 cyrus.cache
61479537 8 -rw------- 1 _cyrus mail 182 Jun 12 15:57 cyrus.header
61479033 8 -rw------- 1 _cyrus mail 176 Jun 12 15:57 cyrus.index

Dirlist Users/Maildir

total 0
drwx------ 2 user_1 staff 68 Jun 12 14:07 cur
drwx------ 2 user_1 staff 68 Jun 12 14:48 tmp
drwx------ 7 user_1 staff 238 Jun 12 14:48 new
ls -ltr Maildir/new: die Mails stehen hier:
-rw------- 1 user_1 staff 1572 Jun 12 14:07 1244808420.Ve000002I3aa09f8M741280.localhost
-rw------- 1 user_1 staff 729 Jun 12 14:09 1244808554.Ve000002I3aa0a52M612058.localhost
-rw------- 1 user_1 staff 725 Jun 12 14:26 1244809575.Ve000002I3aa0c97M975620.localhost
-rw------- 1 user_1 staff 727 Jun 12 14:42 1244810555.Ve000002I3aa0e2aM376177.localhost
-rw------- 1 user_1 staff 664 Jun 12 14:48 1244810905.Ve000002I3aa108eM912298.localhost
 

Anhänge

  • client2.jpg
    client2.jpg
    38,2 KB · Aufrufe: 43
  • client1.jpg
    client1.jpg
    44,6 KB · Aufrufe: 39
Ursache gefunden: Postfix -> Cyrus-Imap

Ich habe die Ursache gefunden.

Das Postfix die Mail nicht an Cyrus übergeben wollte lag wohl an der gemeinsam genutzten Socket Verbindung. Die Berechtigung für die Unixgruppe stand für lmtp auf "mail" und muss wohl auf "_postdrop" stehen.

Dann funktionert es mit der Mailzustellung an den Cyrus-Inbox Postkorb des Benutzers "user_1".

Habe folgendes geändert:

cyrus.conf
von --> #lmtpunix cmd="lmtpd" listen="/opt/local/var/imap/socket/lmtp" prefork=1
nach --> lmtpunix cmd="lmtpd" listen="/opt/local/var/spool/postfix/public/lmtp" prefork=1

main.cf:
von --> mailbox_transport = /opt/local/var/imap/socket/lmtp
nach --> mailbox_transport = lmtp:unix:public/lmtp

Fazit: Ich kann nun alle Funktionen der "Sever Admin Software" mit Opensource abbilden.
Von DNS, DHCP über Freigaben und Shares, Benutzerverwaltung und Mailverwaltung über sasldb2, PAM LDAP und mySQL, usw. Bei Gelegenheit werde ich mal ein Howto für diese ganzen Sachen erstellen. Man findet zwar jede Menge Howtos für Linux Derivate, aber Null für die Leopard Implementation.
 

Anhänge

  • client3.jpg
    client3.jpg
    57,9 KB · Aufrufe: 47
Schön, dass Du die Lösung gefunden hast ;).

Das ist aber eigentlich kein Unix Thema als solches, sondern passt besser in unseren neuen Bereich "Mac OS X Server / Serverdienste". Ich verschieb den Thread mal dahin.
 
Zuletzt bearbeitet:
Ein Howto wäre wirklich einmal etwas lohnenswertes. Man findet immer nur teilweise ein Howto aber nie/selten ein komplettes was man auch versteht. Würde mich freuen, wenn es soetwas mal geben würde.

Gruss
Ingo
 
Zurück
Oben Unten