Le 22 juil. 2013 à 19:31, Cedric a écrit :

> Hi,
> 
> There's the information again :
> 
> I use sendmail with dovecot-lda delivery :
> 
> Mvirtual,       P=/vdl/libexec/dovecot/dovecot-lda, F=lsDFMShP, S=10, R=20/40,
>                A=/vdl/libexec/dovecot/dovecot-lda -d $u@$h

Ha... So, there are still people using Sendmail for new installations. ;-)
Sorry, I don't know why I have thought about postfix.
My memories about Sendmail are very, very tiny, so I'll assume the above is 
correct (doesn't seem too audacious, given the lines with "to=t...@mail.vdl ... 
mailer=virtual" written by Sendmail in the log).

Please find hereafter my quick interpretation of what's happening when sending 
a message to "t...@mail.vdl" (note that the same description should apply for a 
message to "cedr...@mail.vdl" as well).


> The current query :
> 
> user_query = SELECT \
>               s_courriel_utilisateur.utilisateur as user, \

According to the query output you provide below, you are replacing here 
"t...@mail.vdl" by "cedr...@mail.vdl"


>               s_courriel_utilisateur.utilisateur as username, \

and here "test" by "cedrict"


>               s_courriel_domaine.nom as domain, \

and here "mail.vdl" by NULL?
Or something like that.
Anyway, those substitutions should explain the "username changed t...@mail.vdl 
-> cedrict" and "cedrict -> cedr...@mail.vdl" infos in the log.
The problem is, the effect of such substitutions isn't really defined in a 
user_query: at best they don't do anything, at worse they may lead to strange 
interpretations of %n, %u, %d in doevecot.conf.


> concat("/vhome/",s_courriel_domaine.nom,"/home/",s_courriel_utilisateur.utilisateur)
>  as home, \
> concat("/vhome/",s_courriel_domaine.nom,"/home/",s_courriel_utilisateur.utilisateur,"/mail/index")
>  as "index", \
> concat("/vhome/",s_courriel_domaine.nom,"/home/",s_courriel_utilisateur.utilisateur,"/mail/control")
>  as control, \
> concat("/var/spool/vmail/",s_courriel_domaine.nom,"/",s_courriel_utilisateur.utilisateur)
>  as inbox, \

Not sure, but I think you are trying to split into three pieces (index, 
control, inbox) what Dovecot expects to be returned as a single column "mail" 
(which, when not NULL, overrides mail_location) from a user_query.


>               "maildir++" as layout, \

Is this OK in the context of a user_query?


>               s_courriel_utilisateur.uid as uid,s_courriel_domaine.gid as gid 
> \
>   FROM  s_courriel_utilisateur left join s_courriel_alias on 
> s_courriel_utilisateur.id=s_courriel_alias.utilisateur and 
> s_courriel_alias.archive !=1 ,s_courriel_domaine \
>   WHERE s_courriel_utilisateur.archive !=1 \
>         and s_courriel_domaine.archive !=1 \
>         and s_courriel_utilisateur.domaine=s_courriel_domaine.id \
>         and s_courriel_domaine.nom = '%Ld' \
>         and ( s_courriel_utilisateur.utilisateur = '%Ln' or 
> s_courriel_alias.alias  = '%Ln' )
> 
> 
> The query, including the output :
> 
> 
> [...]
> *************************** 1. row ***************************
>    user: cedr...@mail.vdl
> username: cedrict
>    home: /vhome/mail.vdl/home/cedrict
>   index: /vhome/mail.vdl/home/cedrict/mail/index
> control: /vhome/mail.vdl/home/cedrict/mail/control
>   inbox: /var/spool/vmail/mail.vdl/cedrict
>  layout: maildir++
>     uid: 60001
> 
> The dovecot log , you can see dovecot lda deliver the message to 
> inbox=/var/spool/vmail/mail.vdl/test and not 
> inbox=/var/spool/vmail/mail.vdl/cedrict
> 
> [root@devshed vdl]# Jul 22 13:29:47 devshed sendmail[32409]: dangerous 
> permissions=40777 on queue directory /var/spool/clientmqueue/
> [...]
> Jul 22 13:29:47 devshed dovecot: auth: Debug: master in: USER 1       
> t...@mail.vdl   service=lda
> [...]
> Jul 22 13:29:47 devshed dovecot: auth-worker(32406): Debug: 
> auth(t...@mail.vdl): username changed t...@mail.vdl -> cedrict
> Jul 22 13:29:47 devshed dovecot: auth-worker(32406): Debug: auth(cedrict): 
> username changed cedrict -> cedr...@mail.vdl
> Jul 22 13:29:47 devshed dovecot: auth: Debug: userdb out: USER 1       
> t...@mail.vdl   home=/vhome/mail.vdl/home/cedrict 
> index=/vhome/mail.vdl/home/cedrict/mail/index 
> control=/vhome/mail.vdl/home/cedrict/mail/control 
> inbox=/var/spool/vmail/mail.vdl/cedrict layout=maildir++ uid=60001       
> gid=231
> Jul 22 13:29:47 devshed dovecot: lda: Debug: auth input: t...@mail.vdl 
> home=/vhome/mail.vdl/home/cedrict 
> index=/vhome/mail.vdl/home/cedrict/mail/index 
> control=/vhome/mail.vdl/home/cedrict/mail/control 
> inbox=/var/spool/vmail/mail.vdl/cedrict layout=maildir++ uid=60001 gid=231
> Jul 22 13:29:47 devshed dovecot: lda: Debug: Added userdb setting: 
> plugin/control=/vhome/mail.vdl/home/cedrict/mail/control
> Jul 22 13:29:47 devshed dovecot: lda: Debug: Added userdb setting: 
> plugin/inbox=/var/spool/vmail/mail.vdl/cedrict
> Jul 22 13:29:47 devshed dovecot: lda: Debug: Added userdb setting: 
> plugin/index=/vhome/mail.vdl/home/cedrict/mail/index
> Jul 22 13:29:47 devshed dovecot: lda: Debug: Added userdb setting: 
> plugin/layout=maildir++

Note here "plugin/control", "plugin/inbox", "plugin/index" and "plugin/layout": 
considered as unknown settings and placed into plugin sections.


> Jul 22 13:29:47 devshed dovecot: lda(t...@mail.vdl): Debug: Effective 
> uid=60001, gid=231, home=/vhome/mail.vdl/home/cedrict
> Jul 22 13:29:47 devshed dovecot: lda(t...@mail.vdl): Debug: quota: No quota 
> setting - plugin disabled
> Jul 22 13:29:47 devshed dovecot: lda(t...@mail.vdl): Debug: maildir++: 
> root=/vhome/mail.vdl/home/cedrict/mail, index=, indexpvt=, 
> control=/vhome/mail.vdl/home/cedrict/mail/control, 
> inbox=/var/spool/vmail/mail.vdl/test, alt=

The home directory is thus the one provided without ambiguity by the user_query.
See below for the control and the inbox.


> Jul 22 13:29:47 devshed dovecot: lda(t...@mail.vdl): Debug: quota: No quota 
> setting - plugin disabled
> Jul 22 13:29:47 devshed dovecot: lda(t...@mail.vdl): Debug: none: root=, 
> index=, indexpvt=, control=, inbox=, alt=
> Jul 22 13:29:47 devshed dovecot: lda(t...@mail.vdl): Debug: Destination 
> address: t...@mail.vdl (source: user@hostname)

Dovecot is now a bit lost and seems to revert to "reasonable" guesses: the 
domain seems to have been lost (hence the hostname), but the original user 
("test") is still at hand.

So, there was still a way to find out something, with the help of that line in 
dovecot.conf:

        mail_location =  
mbox:%h/mail:LAYOUT=maildir++:INDEX=MEMORY:CONTROL=%h/mail/control:INBOX=/var/spool/vmail/%d/%n


> [...]
> 
> Thank in advance.

HTH,
Axel

Reply via email to