ubuntuusers.de

Dovecot Exim Mysql

Status: Gelöst | Ubuntu-Version: Server 10.04 (Lucid Lynx)
Antworten |

Mr-Pi

Anmeldungsdatum:
25. Februar 2011

Beiträge: 38

Wohnort: /home/mrpi

Moin Zusammen,

ich habe mir gerade einen Mail-Server mit Exim als MTA und MySQL zur User Verwaltung eingerichtet.
Nun versuche ich vergebens mir einen Imap-Server Einzurichten, der mit mbox statt mit Maildir arbeitet.

Doch irgendwie komme ich nicht weiter, naja hier auf alle Fälle mal die Interessanten Daten:

MySQL-Datenbank:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
-- Database: `exim`
-- Passwd: `exim`

CREATE TABLE `aliases_domain1.com` (
  `name` tinytext NOT NULL,
  `redirect_to` tinytext NOT NULL
);
INSERT INTO `aliases_domain1.com` (`name`, `redirect_to`) VALUES
('Admin', 'user@domain1.com');

CREATE TABLE `aliases_domain2.de` (
  `name` tinytext NOT NULL,
  `redirect_to` tinytext NOT NULL
);
INSERT INTO `aliases_domain2.de` (`name`, `redirect_to`) VALUES
('mm', 'user@domain2.de'),
('das', 'user@domain2.de'),
('klaus', 'user@domain2.de');

CREATE TABLE `local_domains` (
  `domain` tinytext NOT NULL
);
INSERT INTO `local_domains` (`domain`) VALUES
('localhost'),
('domain1.com'),
('domain2.de');

CREATE TABLE `users_domain1.com` (
  `user_name` tinytext NOT NULL,
  `passwd` tinytext NOT NULL
);
INSERT INTO `users_domain1.com` (`user_name`, `passwd`) VALUES
('user', 'pass');

CREATE TABLE `users_domain2.de` (
  `user_name` tinytext NOT NULL,
  `passwd` tinytext NOT NULL
);
INSERT INTO `users_domain2.de` (`user_name`, `passwd`) VALUES
('user', 'pass123'),
('franz', '123franz');

Exim Config:

hide mysql_servers = localhost/exim/exim/exim

DOMAIN_QUERY =  select `domain` from `local_domains` where `domain` = \
                '${quote_mysql:$domain}'

PASSPL_QUERY =  select `user_name` from `users_$domain` where `user_name` = \
                '${quote_mysql:$auth2}' and `passwd` = '${quote_mysql:$auth3}'

PASSLO_QUERY =  select `user_name` from `users_$domain` where `user_name` = \
                '${quote_mysql:$auth1}' and `passwd` = '${quote_mysql:$auth2}'

PASSMD_QUERY =  select `passwd` from `users_$domain` where `user_name` = \
                '${quote_mysql:$auth1}'


ALIAS_QUERY =   select `redirect_to` from `aliases_$domain` where `name` = \
                '${quote_mysql:$local_part}'

USERS_QUERY =   select `user_name` from `users_$domain` where `user_name` = \
                '${quote_mysql:$local_part}'


domainlist local_domains = ${lookup mysql{DOMAIN_QUERY}}
domainlist relay_to_domains = mrpi-home.dyndns.org

hostlist relay_from_hosts = localhost:127.0.0.0/8

#tls
tls_advertise_hosts = *
tls_certificate = /etc/exim4/exim.crt
tls_privatekey = /etc/exim4/exim.key

.include /etc/exim4/inc.conf

begin routers

extern:
        driver = dnslookup
        domains = ! +local_domains
        transport = extern
        no_more

aliases:
        driver = redirect
        data = ${lookup mysql{ALIAS_QUERY}}
        file_transport = address_file
        pipe_transport = address_pipe
#       no_more

intern:
        driver = accept
#       check_local_user
        condition = ${lookup mysql{USERS_QUERY}}
        retry_use_local_part
        transport = intern

        no_more

begin transports

extern:
        driver = smtp
        interface =

intern:
        driver = appendfile
        user = mail
        group = mail
        mode = 660
        file = /mail/$domain/$local_part/$local_part
address_pipe:
        driver = pipe
        return_output

address_file:
        driver = appendfile
        delivery_date_add
        envelope_to_add
        return_path_add

begin authenticators

auth_plain:
        driver = plaintext
        public_name = PLAIN
        server_condition = ${lookup mysql{PASSPL_QUERY}{yes}{no}}
        server_prompts = :
        server_set_id = $auth2

auth_login:
        driver = plaintext
        public_name = LOGIN
        server_condition = ${lookup mysql{PASSLO_QUERY}{yes}{no}}
        server_prompts = Username:: : Passwd::
        server_set_id = $auth1

auth_cram_md5:
        driver = cram_md5
        public_name = CRAM-MD5
        server_secret = ${lookup mysql{PASSMD_QUERY}{$value}fail}
        server_set_id = $auth2

Dovecot:

base_dir = /var/run/dovecot
protocols = imap imaps
listen = *
shutdown_clients = yes

mail_debug = yes

mbox_very_dirty_syncs = yes

auth_verbose = yes
auth_debug = yes
auth_debug_passwords = no

auth_worker_max_count = 30

auth default {
        mechanisms = plain

        passdb pam {
        }

        passdb sql {
        args = /etc/dovecot-sql.conf
        }

        userdb static {
        }

        user = mail
        count = 2
}

und /etc/dovecot-sql.conf

driver = mysql
connect = host=127.0.0.1 dbname=exim user=exim password=exim
default_pass_scheme = PLAIN
password_query = SELECT password FROM users_%d WHERE username='%n'

user_query =

Bis jetzt tut auch alles, eben alles außer Dovecot.
Für guten Rat wäre ich dankbar.

PS: Maildir kommt für mich nicht in Frage 😉 .


Mit freundlichen Grüßen
Mr. Pi

nbkr

Avatar von nbkr

Anmeldungsdatum:
29. Oktober 2007

Beiträge: 1936

Wohnort: Aschaffenburg

Was sagt Dovecot denn in den Logs? Welche Fehlermeldungen erhälst du, was genau funktioniert nicht (Zustellung der E-Mails in die Mbox oder Abrufen der Daten, etc. pp).

Mr-Pi

(Themenstarter)

Anmeldungsdatum:
25. Februar 2011

Beiträge: 38

Wohnort: /home/mrpi

nbkr schrieb:

Was sagt Dovecot denn in den Logs?

Ebenfalls ein Problem, eben genau 0.

Welche Fehlermeldungen erhälst du, was genau funktioniert nicht (Zustellung der E-Mails in die Mbox oder Abrufen der Daten, etc. pp).

Also wie gesagt, Exim stellt die Mails wie gewollt zu und tut auch mit der Autorisierung.
Das Problem liegt höchstwahrscheinlich bei Dovecot, das heißt, das ich die Mails nicht abgerufen bekomme.

Mit freundlichen Grüßen,
Mr. Pi

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Zeig bitte mal eine beispielhafte Zustellung einer E-Mail in den Logs.

Welche Ausgabe gibt sudo netstat -tlpen? Was für eine Fehlermeldung bekommst du, wenn du E-Mails abrufen möchtest?

Mr-Pi

(Themenstarter)

Anmeldungsdatum:
25. Februar 2011

Beiträge: 38

Wohnort: /home/mrpi

xabbuh schrieb:

Zeig bitte mal eine beispielhafte Zustellung einer E-Mail in den Logs.

Was möchtest du da genau sehen?

Welche Ausgabe gibt sudo netstat -tlpen? Was für eine Fehlermeldung bekommst du, wenn du E-Mails abrufen möchtest?

also netstat -tlpen gibt:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      0          1192257262  6089/dovecot    
tcp        0      0 0.0.0.0:1347            0.0.0.0:*               LISTEN      0          1035785644  3763/sshd       
tcp        0      0 127.0.0.1:10024         0.0.0.0:*               LISTEN      109        1131278629  20873/amavisd (mast
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      105        1035787327  3964/mysqld     
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      0          1192257261  6089/dovecot    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      0          1131770945  4910/apache2    
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      0          1162034597  6503/exim4  

aus, also für mich sieht das so OK aus oder?


Edit:
Beim Abrufen via fetchmail erhalte ich diesen Fehler:

fetchmail: Server CommonName mismatch: vs314.dus2.alvotech.de != mr-pi.de
fetchmail: Server certificate verification error: self signed certificate
fetchmail: Authorization failure on mrpi@mr-pi.de@mr-pi.de
fetchmail: Query status=3 (AUTHFAIL)



Mit freundlichen Grüßen,
Mr. Pi

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Mr-Pi schrieb:

xabbuh schrieb:

Zeig bitte mal eine beispielhafte Zustellung einer E-Mail in den Logs.

Was möchtest du da genau sehen?

Alles vom Verbindungsaufbau des Clients bis zur Zustellung der E-Mail.

[...] aus, also für mich sieht das so OK aus oder?

Und welche Fehlermeldung gibt dir dein Client?

Mr-Pi

(Themenstarter)

Anmeldungsdatum:
25. Februar 2011

Beiträge: 38

Wohnort: /home/mrpi

xabbuh schrieb:

Mr-Pi schrieb:

xabbuh schrieb:

Zeig bitte mal eine beispielhafte Zustellung einer E-Mail in den Logs.

Was möchtest du da genau sehen?

Alles vom Verbindungsaufbau des Clients bis zur Zustellung der E-Mail.

OK:
Das senden via telnet sieht so aus:

> telnet mr-pi.de 25
Trying 81.88.24.109...
Connected to mr-pi.de.
Escape character is '^]'.
220 vs314.dus2.alvotech.de ESMTP Exim 4.72 Sun, 29 May 2011 14:12:19 +0200
helo localhost
250 vs314.dus2.alvotech.de Hello localhost [78.42.148.57]
mail from: mrpi@localhost  
250 OK
rcpt to: mrpi@mr-pi.de
250 Accepted
data
354 Enter message, ending with "." on a line by itself
Hallo das ist ein Test.
1
2
3
Test
Test
Test
.
250 OK id=1QQerq-0005cD-Hm
quit
221 vs314.dus2.alvotech.de closing connection
Connection closed by foreign host.

Der Exim mainlog sagt:

[…]
2011-05-29 14:13:35 1QQerq-0005cD-Hm <= mrpi@localhost H=(localhost) [78.42.148.57] P=smtp S=249
2011-05-29 14:13:35 1QQerq-0005cD-Hm => mrpi <mrpi@mr-pi.de> R=intern T=intern
2011-05-29 14:13:35 1QQerq-0005cD-Hm Completed

[…] Und welche Fehlermeldung gibt dir dein Client?

Siehe Edit.

Roger_Wilco

Anmeldungsdatum:
11. August 2010

Beiträge: Zähle...

Du hast deinem Dovecot nirgendwo gesagt, unter welchem Pfad er die mbox-Dateien findet und /mail/… ist nicht der Standardpfad, unter dem gesucht wird.

Das Datenbankschema ist übrigens auch grausig. Mach dich mal über Normalisierung schlau.

Mr-Pi

(Themenstarter)

Anmeldungsdatum:
25. Februar 2011

Beiträge: 38

Wohnort: /home/mrpi

Roger Wilco schrieb:

Du hast deinem Dovecot nirgendwo gesagt, unter welchem Pfad er die mbox-Dateien findet und /mail/… ist nicht der Standardpfad, unter dem gesucht wird.

Oh, da hast du Recht. Wie teile ich das den Dovecot mit?

Das Datenbankschema ist übrigens auch grausig. Mach dich mal über Normalisierung schlau.

Naja, ich denke 1., das ist Geschmackssache und 2. die Database habe ich so bekommen und soll das Schema auch nicht ändern.
Trotzdem super dank für das erkennen des Fehlers.


Mit freundlichen Grüßen,
Mr. Pi

Roger_Wilco

Anmeldungsdatum:
11. August 2010

Beiträge: 224

Mr-Pi schrieb:

Wie teile ich das den Dovecot mit?

Zum Beispiel indem du mail_location korrekt setzt. Details findest du unter http://wiki.dovecot.org/MailLocation/Mbox

Mr-Pi

(Themenstarter)

Anmeldungsdatum:
25. Februar 2011

Beiträge: 38

Wohnort: /home/mrpi

Roger Wilco schrieb:

Mr-Pi schrieb:

Wie teile ich das den Dovecot mit?

Zum Beispiel indem du mail_location korrekt setzt. Details findest du unter http://wiki.dovecot.org/MailLocation/Mbox

OK, erledigt, der Erfolg bleibt aber trotzdem aus.

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Der Fehlermeldung von fetchmail nach zu urteilen, sind dort nicht die korrekten Zugangsdaten hinterlegt (Authorization failure on mrpi@mr-pi.de@mr-pi.de).

Mr-Pi

(Themenstarter)

Anmeldungsdatum:
25. Februar 2011

Beiträge: 38

Wohnort: /home/mrpi

xabbuh schrieb:

Der Fehlermeldung von fetchmail nach zu urteilen, sind dort nicht die korrekten Zugangsdaten hinterlegt (Authorization failure on mrpi@mr-pi.de@mr-pi.de).

Hem, die Login Daten müssten simmen.
Jedenfalls stehen Sie so in der MySql-Database und und ich kann mich mit diesen auch Problemlos via exim einloggen.

Das der Login via imap net tut, würde ich mal auf die Datei "/etc/dovecot-sql.conf" schieben.
Diese sieht inzwischen so aus:

driver = mysql
connect = host=127.0.0.1 dbname=exim user=exim password=exim
default_pass_scheme = PLAIN
password_query = SELECT passwd FROM users_%d WHERE user_name='%n'

user_query =


Mit freundlichen Grüßen,
Mr. Pi

Roger_Wilco

Anmeldungsdatum:
11. August 2010

Beiträge: 224

Mr-Pi schrieb:

OK, erledigt, der Erfolg bleibt aber trotzdem aus.

Da du nun die URL zur Dovecot-Dokumentation in deren Wiki kennst, kannst du dein neu erworbenes Wissen gleich anwenden und versuchen, den Dovecot etwas gesprächiger zu machen, damit du nicht raten musst, warum es nicht funktioniert.

Antworten |