[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [msmtp-users] bug in account selection with default account and inheritance



On Tue, Nov 02, 2010 at 02:36:09PM +0000, Adam Spiers wrote:
> Hi all,
> 
> I'm seeing some very strange behaviour regarding the selection of a
> default account with the following config file:

[snipped]

> When I run msmtp in 'pretend' mode, it all looks good:

[snipped]

> However, when I remove the '-P' flag, it goes horribly wrong:
> 
>     $ msmtp -d --read-envelope-from -C ~/.msmtprc test@...247... < mail.txt
>     ignoring system configuration file /etc/msmtprc: No such file or directory
>     loaded user configuration file /home/adam/.msmtprc
>     using account common from /home/adam/.msmtprc

[snipped]

>     reading recipients from the command line
>     msmtp: cannot locate host dummy: Name or service not known
>     msmtp: could not send mail (account common from /home/adam/.msmtprc)
> 
> This must be a bug, right?  For some reason it looks like it's
> defaulting to the first account in the list, rather than the one
> called 'default'.

Upon further investigation, it seems that if neither -P nor -a are
specified, the default account selected is the first one in the config
file.  This got me suspicious, so I started reading the manual page
more closely and found the following snippets:

        --read-envelope-from
            Read the envelope from address from the From header of the
            mail.

    [...]

    -f, --from=address
        Set  the  envelope-from  address.  It  is  only  used   when
        auto_from is off.
        If  no  account  was  chosen yet (with --account or --host),
        this option will choose the first account that has the given
        envelope-from  address  (set  with  the from command). If no
        such account is found, "default" is used.

    [...]

    The user can choose which account to use in one of three ways:

    [...]

        --from=address or --read-envelope-from
            Choose the first account from the system or user
            configuration file that has a matching envelope-from address
            as specified by a from command. This works only when neither
            --account nor --host is used.

    [...]

    The envelope_from=yes option lets Mutt use the -f option of
    msmtp. Therefore msmtp chooses the first account that matches the
    from address you@...249...

So I'm guessing that msmtp extracted the address from the From:
header, and then looks for the first account which has a 'from' value
matching that address.

However, this does not explain why the behaviour is different in
pretend mode; I strongly suspect that's a bug.

Additionally, I would suggest that in debug mode, the output should be
altered to include an explanation of the account selection process.

Cheers,
Adam