PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Permission-Problem mit Courier-Imap und PostFix



Cyderic
20.10.09, 13:12
So, da ich wirklich langsam am verzweifeln bin, hoffe ich sehr das mir hier jemand hilft. Ersteinmal alle wichtigen Infos (ich hoffe ich vergesse nichts)

Distribution: SLES 10 SP2
Softwareversionen:
• Postfix 2.6.1-10.2
• Courier-Imap 4.5.1-5.5

postfix -n (PostConf)

alias_maps = mysql:/etc/postfix/mysql_aliases.cf
append_dot_mydomain = no
biff = no
bounce_queue_lifetime = 1d
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
delay_warning_time = 2h
html_directory = /usr/share/doc/packages/postfix/html
inet_interfaces = all
local_header_rewrite_clients = $mydestination
mailbox_transport = virtual
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
message_size_limit = 8000000
mydestination = mysql:/etc/postfix/mysql_destination.cf
mydomain = mail.linux.de
myhostname = mail.linux.de
mynetworks = 192.168.0.0/24 , 127.0.0.0/8
myorigin = mail.linux.de
newaliases_path = /usr/bin/newaliases
readme_directory = /usr/share/doc/packages/postfix/README_FILES
recipient_canonical_maps = mysql:/etc/postfix/mysql_recipient_canonical.cf
remote_header_rewrite_domain = $mydestination
sample_directory = /usr/share/doc/packages/postfix/samples
sender_canonical_maps = mysql:/etc/postfix/mysql_sender_canonical.cf
sendmail_path = /usr/sbin/sendmail
setgid_group = vmail
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_destination, reject_unlisted_recipient, reject_unauth_pipelining
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydestination
smtpd_sasl_security_options = noanonymous
transport_maps = mysql:/etc/postfix/mysql_transport.cf
transport_retry_time = 10s
trigger_timeout = 20s
unknown_local_recipient_reject_code = 450
virtual_alias_maps = mysql:/etc/postfix/mysql_email2email.cf mysql:/etc/postfix/mysql_forwarding.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = mysql:/etc/postfix/mysql_destination_virtual.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_mailboxes.cf
virtual_uid_maps = static:5000



Courier-Imap Conf (Imapd)

ADDRESS=127.0.0.1
PORT=143
MAXDAEMONS=40
MAXPERIP=20
PIDFILE=/var/run/imapd.pid
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=imapd"
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
IMAP_KEYWORDS=1
IMAP_ACL=1
IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE"
IMAP_PROXY=0
IMAP_PROXY_FOREIGN=0
IMAP_IDLE_TIMEOUT=20
IMAP_MAILBOX_SANITY_CHECK=1
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
IMAP_CAPABILITY_TLS_ORIG="$IMAP_CAPABILITY_ORIG AUTH=PLAIN"
IMAP_DISABLETHREADSORT=0
IMAP_CHECK_ALL_FOLDERS=0
IMAP_OBSOLETE_CLIENT=0
IMAP_UMASK=022
IMAP_ULIMITD=65536
IMAP_USELOCKS=1
IMAP_SHAREDINDEXFILE=/etc/courier/shared/index
IMAP_ENHANCEDIDLE=0
IMAP_TRASHFOLDERNAME=Trash
IMAP_EMPTYTRASH=Trash:7
IMAP_MOVE_EXPUNGE_TO_TRASH=0
SENDMAIL=/usr/sbin/sendmail
HEADERFROM=X-IMAP-Sender
IMAPDSTART=YES
MAILDIRPATH=/var/mail/
authmodulelist="authmysql"

Lokale Versendungen unter Postfix funktionieren soweit Problemlos (Telnet).

Wenn ich mich jetzt versuche über den Imap Server via Telnet einzuloggen passiert folgendes:


linux:~ # telnet localhost imap
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2008 Double Precision, Inc. See COPYING for distribution information.
a LOGIN feuer 12345
* BYE [ALERT] Fatal error: Account's mailbox directory is not owned by the correct uid or gid:
Connection closed by foreign host.


So, ich kann natürlich Englisch und verstehe auch was er von mir will. Aber nach meiner Meinung sind die Permissions richtig gesetzt.

getfacl /var/mail/feuer/

linux:~ # getfacl /var/mail/feuer/
getfacl: Removing leading '/' from absolute path names
# file: var/mail/feuer/
# owner: vmail
# group: vmail
user::rwx
group::rwx
other::rwx

Und hier noch ein Tail von der Mail-Log (ist aber unwichtig denke ich):


Oct 20 12:21:58 linux authdaemond: Installation complete: authcustom
Oct 20 12:21:58 linux authdaemond: Installing libauthpipe
Oct 20 12:21:58 linux authdaemond: libauthpipe.so: cannot open shared object file: No such file or directory
Oct 20 12:21:58 linux postfix/qmgr[13899]: 6279C12C77C: from=<test@test.de>, size=356, nrcpt=1 (queue active)
Oct 20 12:21:59 linux postfix/virtual[13982]: 6279C12C77C: to=<feuer@linux.de>, relay=virtual, delay=1599, delays=1598/0.49/0/0.11, dsn=2.0.0, status=sent (delivered to maildir)
Oct 20 12:21:59 linux postfix/qmgr[13899]: 6279C12C77C: removed
Oct 20 12:22:21 linux imapd: Connection, ip=[::ffff:127.0.0.1]
Oct 20 12:22:26 linux imapd: feuer: Account's mailbox directory is not owned by the correct uid or gid
Oct 20 12:51:28 linux imapd: Connection, ip=[::ffff:127.0.0.1]
Oct 20 12:51:41 linux imapd: feuer: Account's mailbox directory is not owned by the correct uid or gid


Also, welche UID, GID erwartet Courier denn? Ich habe es mit vmail versucht, mit feuer, mit postfix. Alles Fehlanzeige. Ich bin froh das ich mittlerweile überhaupt soweit gekommen bin. Ich mache jetzt schon eine Woche an dem Server rum und habe schon haufenweise "Tutorials" gelesen, egal ob Englisch oder Deutsch.
Ich hoffe jemand von euch weiss welche Permissions er erwartet..ich glaube das ich irgendwie auf dem Schlauch stehe. Wenn noch mehr Infos benötigt werden bitte bescheid sagen.


Vielen Dank
Gruß Cyd

drcux
20.10.09, 18:56
Unter welchem User läuft denn der courier? Und warum RWX für alle?

Cyderic
20.10.09, 19:14
Läuft unter root und rwx für alle eigentlich aus Testzwecken heraus.

drcux
20.10.09, 19:27
Imap_mailbox_sanity_check=0

Cyderic
20.10.09, 20:10
Das hatte ich schon versucht aber dann bekam ich ein "Unable to open Mailbox".
Kann es aber gerade nicht testen, da ich nicht mehr auf Arbeit bin ;)

Cyderic
26.10.09, 09:13
Entschuldigt den doppelpost, aber das Problem besteht weiterhin. Wenn ich den Check ausmache kommt eben unable to open Mailbox.

Allerdings fällt mir auf das der Befehl maildirmake die Mailbox unter /var/mail anlegt, während mit Telnet versendete Mails in /home/vmail/ landen. Ist das vielleicht ein Config Fehler? Ich weiss nicht mehr weiter :(

Cyderic
03.11.09, 13:10
Also..ich bin mal ein Schritt weiter gekommen.

Zuersteinmal versuche ich es mitlerweile über POP3 anstatt IMAP. Meine Maildirs sollen wie folgt aufgebaut sein:

/var/mail/linux.de/[users maildir]

Postfix macht das sogar. Sprich, wenn ich alle verzeichnisse in linux.de lösche, und über Telnet eine Mail an den Verteiler sende, let Postfix alle Maildirs an - super Sache!

Jetzt ist das Problem das ich mich nicht über POP3 einloggen kann. Der Server hat nämlich das Problem das er die Maildirs nicht findet. Wenn ich MAILDIRPATH auf Maildir lasse, funktioniert es garnicht (no such file or directory). Wenn ich als MAILDIRPATH /var/mail/ angebe, erwarter er aber in diesem Verzeichniss schon die cur, new und temp Verzeichnisse. Dabei habe ich es eigentlich richtig konfiguriert denke ich:

authmysqlrc


MYSQL_SERVER localhost
MYSQL_USERNAME postfix
MYSQL_PASSWORD post
MYSQL_PORT 3306
MYSQL_DATABASE postfix
MYSQL_USER_TABLE users
#MYSQL_CRYPT_PWFIELD crypt #optionale Crypt-Verschlüsselung der Passwörter
MYSQL_CLEAR_PWFIELD password #Passwort im Klartext
DEFAULT_DOMAIN linux.de #wenn keine Domain angegeben wird
MYSQL_UID_FIELD '5000'
MYSQL_GID_FIELD '5000'
MYSQL_LOGIN_FIELD email
MYSQL_HOME_FIELD "/var/mail"
#MYSQL_MAILDIR_FIELD maildir
MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/')
MYSQL_WHERE_CLAUSE status='1'



pop3


PIDFILE=/var/run/pop3d.pid
MAXDAEMONS=40
MAXPERIP=4
POP3_ULIMITD=65536
POP3AUTH=""
POP3AUTH_ORIG="PLAIN LOGIN CRAM-MD5 CRAM-SHA1 CRAM-SHA256"
POP3AUTH_TLS=""
POP3AUTH_TLS_ORIG="LOGIN PLAIN"
POP3_PROXY=0
PORT=110
ADDRESS=0
TCPDOPTS="-nodnslookup -noidentlookup"
LOGGEROPTS="-name=pop3d"
POP3DSTART=YES
MAILDIRPATH=/var/mail/
authmodulelist="authmysql"

Änder ich hier den MAILDIRPATH auf Maildir, kommt der Fehler "No such File or Directory"

mysql_virtual_mailbox.cf

user = postfix
password = postfix
hosts = localhost
#hosts = 127.0.0.1
dbname = postfix
table = users
select_field = maildir
where_field = email
additional_conditions = and active = '1'


In der MySQL-Tabelle steht unter maildir, zum Beispiel, beim Benutzer
feuer@linux.de der Wert feuer/

Wahrscheinlich habe ich das aber so falsch Konfiguriert. Weiss jemand wie es richtig geht?

cane
03.11.09, 21:16
Tipp: yast2-mail-server Paket installieren, verwendet dann Cyrus und Postfix gegen LDAP und alles ist fein.

mfg
cane

Cyderic
06.11.09, 11:06
Danke für den Tip, aber ich würde es gern zum laufen bringen bevor ich jetzt wieder bei 0 Anfange und es dann wieder ganz neue Probleme gibt..

Den obigen Fehler konnte ich beheben. Es lag daran das Courier nicht die authmysqlrc im eigenen verzeichnis benutzt hat, sondern eine im System. Jedenfalls stand dort 'authpam' an erster Stell, deshalb das unable to open...

Jedenfalls jetzt neues Problem. Courier bringt ein "Input/Output Error" beim Login. Die verbindung zu MySQL funktioniert soweit, das MySQL-Log zeigt mir auch dessen Aktivität:


091106 11:03:47 59 Connect root@localhost on
59 Init DB postfix
59 Query SELECT email, "", password, '5001', '5001', CONCAT('/var/mail/',SUBSTRING_INDEX(email,'@',-1),'/'), maildir, "", "", "" FROM users WHERE email = 'feuer' AND (status='1')
60 Connect root@localhost on
59 Quit
60 Init DB postfix
60 Query SELECT email, "", password, '5001', '5001', CONCAT('/var/mail/',SUBSTRING_INDEX(email,'@',-1),'/'), maildir, "", "", "" FROM users WHERE email = 'feuer' AND (status='1')
60 Quit


Aber irgendwas scheint ja daran nicht richtig zu sein...
Weiss jemand Rat?

cane
06.11.09, 11:27
Du könntest den Query mal händisch auf die Datenbank loslassen.

Poste bitte den Log der den IO Error enthält.

mfg
cane

Cyderic
06.11.09, 11:45
Ahh super es geht jetzt. Vielen Dank für den Tip (auf den ich auch selber hätte kommen können). Der Query war falsch, das heisst bei mir nicht 'home'.

Also über Telnet kann ich mich jetzt endlich mit virtuellen benutzern einloggen und die Inbox aufrufen!

Jetzt habe ich aber das Problem das KMail es seltsamerweise nicht kann. Ich starte es lokal und evrsuche den Imap zu kontaktieren. Die Log zeigt mir den Login aber dann passiert nichts mehr. Irgendwann bekommt KMail dann einen Timeout.
Habt ihr eine Idee an was es leigen kann? Im new Verzeichnis sind auch 2 Mails drin, aber irgendwie scheint sich KMail aufzuhängen.

**Update**
Hm..also über PoP3 funktioniert es... aber senden kann ich nichts, obwohl das auch mit Telnet funktioniert. Hm..mal schaun ob ich was finde, weiss allerdings nicht so recht wie ich da nach einem Fehler suchen soll da mir KMail ja nichts sagt...

cane
06.11.09, 13:06
Was steht denn in den logs des Servers?

mfg
cane