• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Postfix / Cyrus: mailbox not found

Status
Für weitere Antworten geschlossen.

S_O

Member
Hallo,
ich habe vor einiger zeit schon mal gepostet, mir konnte jedoch nicht geholfen werden (hab es auch nie hinbekommen). Nun habe ich aber einen neuen Server und versuche es erneut. Ich habe mich genau an diese Anleitung gehalten:
http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html
Das mit dem anti-spam/antivirus habe ich noch nicht gemacht, das es so schon nicht funktioniert.
Ich kann accounts anlegen etc. mit web-cyradm ohne probleme, möchte ich aber emails abrufen sagt er "mailbox not found" (bei thunderbird/win32), wenn ich falsches Passwort eingebe "login incorrect", er erkennt das Benutzerkonte also.
Mails versenden geht nur an Empfänger auf dem server, nach außen funktioniert nicht. Die Postfix-Konfiguration ist genau so wie sie in dem Tutorial steht.
Wenn ich von außerhalb eine Mail an meinen Server sende (z.B. von gmx) bekomme ich bei einer adresse die ist nicht gibt eine ganz normale failure notice, gibt es die adresse, sagt er mir das er die mail nicht zustellen konnte, weil es die mailbox nicht gibt. Auch postfix kann also die benutzerkonten lesen, aber irgendwas scheint mit der mailbox nicht zu stimmen.
Irgendwelche Ideen?
 

PC-Ulf

Member
Schau mal nach ob es die Mailbox auch gibt, bei POP3 ist z.B. die Mailbox web1p1 eine Datei Namens web1p1 die in einem Verzeichnis wie z.B. /var/mail liegt. Sollte leicht mit
Code:
find -name Mailboxname
zu finden sein.

Ist dies der Fall, kannst Du mit
Code:
passwd Mailboxname
ein Paßwort neu setzen und die Einwahl erneut ausprobieren.

Probier das bitte erst aus, bevor wir hier an die Konfiguration von Postfix gehen. :wink:
 
OP
S

S_O

Member
Die Mailkonten existieren nicht als lokale Benutzer, die Benutzerdaten sind in einer MySQL-Datenbank.
Der Ordner /var/mail existiert (als Link auf /var/spool/mail), es ist aber nichts drin, angeblich wird auch jede Mail in einer eigenen Datei gespeichert (stand irgendwo in dem Tutorial).
Meine Suche nach Dateien mit dem Namen des von mir in web-cyradm angelegten Benutzers war erfolglos.

Das Problem scheint ein generelles zu sein, nicht nur in der Postfix-Konfiguration, da sowohl cyrus als auch postfix das Fehlen der Mailbox beanstanden, den Benutzer aber akzeptieren. Die Konfiguration ist genauso wie es in dem Tutorial steht. Muss ich vielleicht noch irgendeinen Ordner anlegen, oder bestimmte Rechte setzen?
 

PC-Ulf

Member
Auf meinem Server habe ich Postfixnutzer nicht über eine MySQL DB laufen. Deshalb kenne ich das Szenario nicht.

Die Datei in der die E-Mails gespeichert werden ist die Mailbox :!: Ist diese Datei nicht vorhanden, kann es nicht funktionieren. Es sei denn, auch dies übernimmt die MySQL DB (mich würde es wundern wenn nur die Benutzer hierrüber verwaltet werden, die Mailbox aber nicht).

Ich würde einfach mal die Mailbox in das Verzeichnis legen, Benutzername und Rechte so vergeben das der User diese nutzen kann. Solltest aber sichergehen das die Authentifizierung über der DB auch funktioniert, meine Postfix Nutzer stehen wie alle Benutzer in der /etc/shadow mit verschlüsselten Paßwort aufgelistet.

Folgende Schritte müssen wir klären:
  • Funktioniert die Authentifizierung über die DB :!:
    Klappt es die Mailbox manuell einzurichten (Versuch ist es wert) :!:
Wenn Du das ausprobiert hast und es immer noch nicht klappt, führe in der Konsole
Code:
postconf -n
aus und poste die Ausgabe hier. Hiermit werden alle Werte der Konfigurationsdatei ausgegeben, die vom Defaultwert abweichen (hilft enorm bei der Fehlersuche).
 
OP
S

S_O

Member
Funktioniert die Authentifizierung über die DB
Ja. Die Fehlermeldung bei falschem Login/falscher Email-Adresse: Login failure.
Bei korrektem Login: Mailbox not found

Klappt es die Mailbox manuell einzurichten (Versuch ist es wert)
Wie?

postconf -n:
Code:
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
debug_peer_level = 2
html_directory = /usr/share/doc/packages/postfix/html
mail_owner = postfix
mailbox_transport = cyrus
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
mydestination = meindomain.de, mysql:/etc/postfix/mysql-mydestination.cf
myhostname = meindomain.de
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/packages/postfix/README_FILES
sample_directory = /usr/share/doc/packages/postfix/samples
sender_canonical_maps = mysql:/etc/postfix/mysql-canonical.cf
sendmail_path = /usr/sbin/sendmail
setgid_group = maildrop
smtpd_helo_required = yes
smtpd_recipient_restrictions = 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_pipelining,
            permit_mynetworks,
            reject_unauth_destination,
            reject_rbl_client zombie.dnsbl.sorbs.net,
            reject_rbl_client relays.ordb.org,
            reject_rbl_client opm.blitzed.org,
            reject_rbl_client list.dsbl.org,
            reject_rbl_client sbl.spamhaus.org,
            permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
unknown_local_recipient_reject_code = 550
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf
 

PC-Ulf

Member
Leg mal folgende Mailbox per Hand an: Im Verzeichnis /var/mail (mit postconf mail_spool_directory überprüfen, ob es sich um dieses oder ein anderes Verzeichnis handelt) die Datei mit den Namen Deiner Mailbox, im folgenden web1p1 von mir genannt.
Code:
echo  > web1p1
chmod 660 web1p1
chown web1p1.root
Überprüfe nun ob die Mailbox beim Abruf der Mails gefunden wird.

edit /
Um welche Version handelt es sich (postconf mail_version) :?:
 
OP
S

S_O

Member
Habe ich gemacht, ändert nichts. Die Datei ändert sich auch in der Größe nicht. Das Verzeichnis habe ich überprüft und es ist /var/mail.
Das steht in dem Tutorial zum Mails abspeichern:
Unlike the WU-IMAPd package, Cyrus uses its own method to store the user's mail. Each message is stored in its own file. The benefit of using separate files is improved reliability since only one message is lost if there is a filesystem error. Metadata such as the status of a message (seen, etc) is stored in a database. Additionally, the messages are indexed to improve Cyrus performance, specially with lots of users and/or lots of big emails. There is nothing else as fast as the Cyrus IMAP-server.
Vermutlich fehlt die Mailbox irgendwo in Cyrus, da Cyrus anscheinend die komplette Mailverwaltung auf dem Server übernimmt.

Versionen:
Postfix: 2.1.5
Cyrus-IMAPd: 2.2.9
Cyrus-SASL: 2.1.20
Alle selber kompiliert.
 

PC-Ulf

Member
S_O schrieb:
Alle selber kompiliert.
Und das unter SuSE :?: Soweit ich weiß wird davon meist abgeraten, weil SuSE zuviele Verzeichnisse wieder anders liegen hat als die meisten Distributionen. Ein Fehler hier und Du kannst lange in den Konfigurationsdateien suchen, ohne Erfolg. :?

Kann Dir erstmal nicht weiterhelfen, das Szenario mit der Datenbank habe ich selber noch nicht ausprobiert und ich habe erst im Februar wieder Zeit mit meinem Testserver zu spielen (hatte ich sowieso mal vor einige Szenarien mit Postfix durchzuspielen, aber zur Zeit stehen Klausuren in der Uni wieder an).
 
OP
S

S_O

Member
Und das unter SuSE Soweit ich weiß wird davon meist abgeraten, weil SuSE zuviele Verzeichnisse wieder anders liegen hat als die meisten Distributionen. Ein Fehler hier und Du kannst lange in den Konfigurationsdateien suchen, ohne Erfolg.
Ich habe es erst mit RPMs versucht, aber das Postfix-RPM wollte bei mir nicht richtig, obwohl es die gleiche Version war und die Konfiguration 100% identisch. Da habe ich denn Postfix selber kompliert und über das rpm gespielt wie es in dem Tutorial steht und seitdem geht überhaupt irgendwas.[/quote]
 
OP
S

S_O

Member
Ich habe jetzt versucht alles nochmal zu machen, falls ich irgdnwo einen fehler drin hab. Leider geht es jetzt gar nicht mehr, cyrus will nicht mehr richtig starten:

Dec 21 10:49:12 master[1897]: setrlimit: Unable to set file descriptors limit to -1: Operation not permitted
Dec 21 10:49:12 master[1897]: retrying with 1024 (current max)
Dec 21 10:49:12 saslauthd[1898]: detach_tty : master pid is: 1898
Dec 21 10:49:12 saslauthd[1898]: ipc_init : listening on socket: /var/run/saslauthd/mux
Dec 21 10:49:12 master[1897]: process started
Dec 21 10:49:12 master[1899]: about to exec /usr/cyrus/bin/ctl_cyrusdb
Dec 21 10:49:12 ctl_cyrusdb[1899]: DBERROR db4: : No such file or directory
Dec 21 10:49:12 ctl_cyrusdb[1899]: DBERROR db4: /var/imap/db/__db.001: No such file or directory
Dec 21 10:49:12 ctl_cyrusdb[1899]: DBERROR db4: : No such file or directory
Dec 21 10:49:12 ctl_cyrusdb[1899]: DBERROR db4: /var/imap/db/__db.001: No such file or directory
Dec 21 10:49:12 ctl_cyrusdb[1899]: DBERROR: dbenv->open '/var/imap/db' failed: No such file or directory
Dec 21 10:49:12 ctl_cyrusdb[1899]: DBERROR: init() on berkeley
Dec 21 10:49:12 ctl_cyrusdb[1899]: DBERROR: writing /var/imap/db/skipstamp: No such file or directory
Dec 21 10:49:12 ctl_cyrusdb[1899]: DBERROR: init() on skiplist
Dec 21 10:49:12 ctl_cyrusdb[1899]: recovering cyrus databases
Dec 21 10:49:12 ctl_cyrusdb[1899]: skiplist: recovered /var/imap/mailboxes.db (0 records, 144 bytes) in 0 seconds
Dec 21 10:49:12 ctl_cyrusdb[1899]: skiplist: recovered /var/imap/annotations.db (0 records, 144 bytes) in 0 seconds
Dec 21 10:49:12 ctl_cyrusdb[1899]: done recovering cyrus databases
Dec 21 10:49:12 master[1897]: unable to create lmtpunix listener socket: No such file or directory
Dec 21 10:49:12 master[1897]: ready for work
Dec 21 10:49:12 master[1904]: about to exec /usr/cyrus/bin/tls_prune
Dec 21 10:49:12 tls_prune[1904]: DBERROR db4: /var/imap/db/__db.001: No such file or directory
Dec 21 10:49:12 tls_prune[1904]: DBERROR: dbenv->open '/var/imap/db' failed: No such file or directory
Dec 21 10:49:12 tls_prune[1904]: DBERROR: init() on berkeley
Dec 21 10:49:12 tls_prune[1904]: DBERROR: reading /var/imap/db/skipstamp, assuming the worst: No such file or directory
Dec 21 10:49:12 tls_prune[1904]: DBERROR db4: environment not yet opened
Dec 21 10:49:12 tls_prune[1904]: DBERROR: opening /var/imap/tls_sessions.db: Invalid argument
Dec 21 10:49:12 tls_prune[1904]: DBERROR: opening /var/imap/tls_sessions.db: cyrusdb error
Dec 21 10:49:12 master[1905]: about to exec /usr/cyrus/bin/ctl_deliver
Dec 21 10:49:12 master[1897]: process 1904 exited, status 1
Dec 21 10:49:12 master[1906]: about to exec /usr/cyrus/bin/ctl_cyrusdb
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR db4: /var/imap/db/__db.001: No such file or directory
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: dbenv->open '/var/imap/db' failed: No such file or directory
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: init() on berkeley
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: reading /var/imap/db/skipstamp, assuming the worst: No such file or directory
Dec 21 10:49:12 ctl_cyrusdb[1906]: checkpointing cyrus databases
Dec 21 10:49:12 ctl_cyrusdb[1906]: archiving database file: /var/imap/annotations.db
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR db4: txn_checkpoint interface requires an environment configured for the transaction subsystem
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: couldn't checkpoint: Invalid argument
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: sync /var/imap/db: cyrusdb error
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR db4: DB_ENV->log_archive interface requires an environment configured for the logging subsystem
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: error listing log files: Invalid argument
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: archive /var/imap/db: cyrusdb error
Dec 21 10:49:12 ctl_cyrusdb[1906]: archiving database file: /var/imap/mailboxes.db
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR db4: txn_checkpoint interface requires an environment configured for the transaction subsystem
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: couldn't checkpoint: Invalid argument
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: sync /var/imap/db: cyrusdb error
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR db4: DB_ENV->log_archive interface requires an environment configured for the logging subsystem
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: error listing log files: Invalid argument
Dec 21 10:49:12 ctl_cyrusdb[1906]: DBERROR: archive /var/imap/db: cyrusdb error
Dec 21 10:49:12 ctl_cyrusdb[1906]: done checkpointing cyrus databases
Dec 21 10:49:12 master[1897]: process 1906 exited, status 1
Dec 21 10:49:12 cyr_expire[1905]: DBERROR db4: /var/imap/db/__db.001: No such file or directory
Dec 21 10:49:12 cyr_expire[1905]: DBERROR: dbenv->open '/var/imap/db' failed: No such file or directory
Dec 21 10:49:12 cyr_expire[1905]: DBERROR: init() on berkeley
Dec 21 10:49:12 cyr_expire[1905]: DBERROR: reading /var/imap/db/skipstamp, assuming the worst: No such file or directory
Dec 21 10:49:12 cyr_expire[1905]: skiplist: recovered /var/imap/annotations.db (0 records, 144 bytes) in 0 seconds
Dec 21 10:49:12 cyr_expire[1905]: skiplist: recovered /var/imap/mailboxes.db (0 records, 144 bytes) in 0 seconds
Dec 21 10:49:12 cyr_expire[1905]: DBERROR db4: environment not yet opened
Dec 21 10:49:12 cyr_expire[1905]: DBERROR: opening /var/imap/deliver.db: Invalid argument
Dec 21 10:49:12 cyr_expire[1905]: DBERROR: opening /var/imap/deliver.db: cyrusdb error
Dec 21 10:49:12 master[1897]: process 1905 exited, status 1
Dec 21 10:49:31 master[1910]: about to exec /usr/cyrus/bin/imapd
Dec 21 10:49:31 imaps[1910]: DBERROR db4: /var/imap/db/__db.001: No such file or directory
Dec 21 10:49:31 imaps[1910]: DBERROR: dbenv->open '/var/imap/db' failed: No such file or directory
Dec 21 10:49:31 imaps[1910]: DBERROR: init() on berkeley
Dec 21 10:49:31 imaps[1910]: DBERROR: reading /var/imap/db/skipstamp, assuming the worst: No such file or directory
Dec 21 10:49:31 imaps[1910]: executed
Dec 21 10:49:31 imaps[1910]: skiplist: recovered /var/imap/mailboxes.db (0 records, 144 bytes) in 0 seconds
Dec 21 10:49:31 imaps[1910]: skiplist: recovered /var/imap/annotations.db (0 records, 144 bytes) in 0 seconds
Dec 21 10:49:31 imaps[1910]: locking disabled: couldn't open socket lockfile /var/imap/socket/imaps-0.lock: No such file or directory
Dec 21 10:49:31 imaps[1910]: accepted connection
Dec 21 10:49:31 imaps[1910]: IOERROR: creating /var/imap/proc/1910: No such file or directory
Dec 21 10:49:31 imaps[1910]: Fatal error: can't write proc file
Dec 21 10:49:31 master[1897]: process 1910 exited, signaled to death by 11
Dec 21 10:49:31 master[1897]: service imaps pid 1910 in BUSY state: terminated abnormally
Ich habe diese Datenbank-dateien gelöscht, aber warum legt er sie nicht neu an? Die waren ursprünglich ja auch nicht da.
 
OP
S

S_O

Member
Hab die Lösung gefunden: mkimap

Nun bin ich jedoch wieder genau so weit wie vorher: mailbox not found

Neben der Mailbox, was ja ein cyrus problem ist, gibt es glaube ich auch noch ein Problem in meiner Postfix-Konfiguration:
Ich kann keine Mails nach außen senden, er sagt dann obwohl ich eingeloggt bin "Relay Access Denied", wie kann ich das ändern, das der User, wenn er sich eingeloggt hat, auch Mails nach draußen senden kann, ich vermute das Problem ist irgendwo bei
smtpd_recipient_restrictions (Einstellung zur Zeit siehe oben), wie muss ich das ändern, sodass er Mails immer entgegennimmt die an ihn gerichtet sind wenn es ich nicht um Spam handelt, der andere Server sich ausweisen konnte, gültiger Absender etc., und Mails nach außen nur nach Login erlaubt sind?

Edit:
Ich habe gerade festgestellt, das ich cyradm nicht ausführen kann, zuerst hat er gesagt das er eine datei nicht finden kann (shell.pm), anscheinend waren alle Perl-Dateien im falschen Ordner (in /usr/local/lib/perl5 anstelle /usr/lib/perl5), ich habe sie dann alle in den anderen Ordner kopiert, und jetzt sagt er das:
Can't locate loadable object for module Cyrus::IMAP in @INC (@INC contains: /usr/lib/perl5/5.8.0/i586-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl .) at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 44
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 44.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 44.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Shell.pm line 60.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Shell.pm line 60.
Compilation failed in require.
BEGIN failed--compilation aborted.

Edit2:
Ich habe nun herasgefunden das ich den Perl-kram auch noch komplieren muss (stand aber nirgendwo im guide), hat aber nicht viel geholfen:
Can't load '/usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/auto/Cyrus/IMAP/IMAP.so' for module Cyrus::IMAP: /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/auto/Cyrus/IMAP/IMAP.so: undefined symbol: db_version at /usr/lib/perl5/5.8.0/i586-linux-thread-multi/DynaLoader.pm line 229.
at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 44
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 44.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 44.
Compilation failed in require at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Shell.pm line 60.
BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Shell.pm line 60.
Compilation failed in require.
BEGIN failed--compilation aborted.

Nach manuellem editieren des Perl-Makefiles habe ich es noch hinbekommen, kann mich aber nicht einloggen:
cyradm --server localhost --user cyrus --auth plain
Password:
IMAP Password:
Login failed: can't request info until later in exchange at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 118
Habe jede Seite die Google zu diesem Problem ausgespuckt hat (waren nur 8) durchgelesen, ohne Erfolg. Was mache ich falsch???
 
OP
S

S_O

Member
Kann mir denn niemand helfen?? :(

Hier nochmal die Probleme zusammengefasst:

1. Postfix akzeptiert keine Mails von den Benutzern an externe Adresses (also z.B. @gmx.de), nur welche an lokale Benutzer (also @mein-domain.de). Er kann jedoch die Anmeldung korrekt überprüfen, wenn ich falschen Username/Passwort eingebe mault er das der Login falsch war, wenn ich an externe Adressen schicken will, sagt er "Relay Access Denied", wenn ich an nicht existierende lokale Benutzer schicke (z.B. gibs-nicht@mein-domain.de) sagt er direkt das der Empfänger unbekannt ist, wenn ich an existierende lokale Benutzer schicke, nimmt er die Mail an.
Mails von außen werden korrekt behandelt, gibt es den Benutzer nicht, nimmt er die Mail nicht an, ansonsten nimmt er sie an und schickt sie danach mit dem Hinweis "Mailbox not found" wieder zurück.

2. Ich kann mich in cyradm nicht einloggen. Es kommt immer folgende Fehlermeldung:

Login failed: can't request info until later in exchange at /usr/lib/perl5/site_perl/5.8.0/i586-linux-thread-multi/Cyrus/IMAP/Admin.pm line 118

3. Bei Zugriffen über POP3/IMAP sagt er immer "Mailbox not found". Der Login wird ebenfalls korrekt überprüft.
 
Status
Für weitere Antworten geschlossen.
Oben