Re: [exim] Different password for remote SMTP relay

Top Page
Delete this message
Reply to this message
Author: Jacob Hansen
Date:  
To: exim-users
Subject: Re: [exim] Different password for remote SMTP relay
That's exactly what I needed, works like a charm. Thanks a lot!

Jacob

On 27/11/2015 11:42, Mike Brudenell wrote:
> Hi, Jacob -
>
> *Disclaimer:* I've not used this myself, so this is hypothesis but
> worth a try…
>
> On 26 November 2015 at 20:04, Jacob Hansen <jacob@???
> <mailto:jacob@chosting.dk>> wrote:
>
>     I then tried following setup in the remote_login section:

>
>         remote_login:
>           driver = plaintext
>           public_name = LOGIN
>           hide client_send =
>     ${lookup{$authenticated_id}lsearch{/etc/differentlogin}{:
>     different_username : different_passsword}{: remote_username :
>     remote_password}

>
>     However this gives me the following EXIM error when attempting to
>     send e-mails:

>
>           == to@??? <mailto:to@address.com> R=remote_route
>     T=remote_transport defer (-48): expansion of
>     "${lookup{$authenticated_id}lsearch{/etc/differentlogin}{" failed
>     in mandrill_login authenticator: missing } at end of string

>
>
> You need to add the closing "}" to match the opening "${" of the
> lookup, otherwise the line is syntactically incorrect. Always check
> your braces balance.
>
>     Adding another } as suggest, i.e
>     |
>     ||    hide client_send =
>     ${lookup{$authenticated_id}lsearch{/etc/differentlogin}}{:
>     different_username : different_passsword}{: remote_username :
>     remote_password}

>
>     gives me failed login (the login details are correct, but maybe an
>     additional } is added to the login instructions or something):

>
>         SMTP<< 435 4.7.8 Error: authentication failed:|

>
>
> By adding the closing "}" you've got the line syntactically correct
> but it's not working as you expect.
>
> I think you're trying to do something that the Exim Specification says
> you can't… you're trying using a single lookup to generate a single
> colon-separated string and then expecting Exim to split this into its
> component parts.
>
> But if you read the /Using plaintext in a client/ section of the
> Specification you'll see
>
>     Note: You cannot use expansion to create multiple strings, because
>     splitting takes priority and happens first.

>
>
> The value of client-send is a number of strings in a colon-separated
> list, and parsing the line/splitting it at the colons happens
> _before_ the string expansion. So I suspect you'll need to use a
> separate lookup to generate each string in turn. For example…
>
> hide client_send =
> ${lookup{$authenticated_id}lsearch{/etc/differentlogin}{:
> different_username : different_passsword}{: remote_username :
> remote_password}
>
>     hide client_send = :
>     ${lookup{$authenticated_id}lsearch{/etc/differentlogin}{different_username}}
>     :
>     ${lookup{$authenticated_id}lsearch{/etc/differentlogin}{different_password}}

>
>
> If you might want to use different username/password pairs based on
> the username matched in /etc/differentlogin you could probably do
> something funky by putting the username/password pair in the file as
> the value of the entry with a separator character. (Properly securing
> the file of course!)
>
> In each of the two lookups above you could then split the value at the
> separator character and use the first element as the username and the
> second for the password.
>
> You'd have to weigh the merits/security/safety of storing passwords in
> a file though, and also be careful to choose a separator character for
> the username/password pair that can never appear in either!
>
> Cheers,
> Mike B-)
>
> --
> Systems Administrator & Change Manager
> IT Services, University of York, Heslington, York YO10 5DD, UK
> Tel: +44-(0)1904-323811
>
> Web:www.york.ac.uk/it-services <http://www.york.ac.uk/it-services>
> Disclaimer:www.york.ac.uk/docs/disclaimer/email.htm
> <http://www.york.ac.uk/docs/disclaimer/email.htm>