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 <[email protected] <mailto:[email protected]>> 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:

          == [email protected] <mailto:[email protected]> 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>



--
## List details at https://lists.exim.org/mailman/listinfo/exim-users
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to