Re: [exim] Unrouteable address - All recipients fail

Αρχική Σελίδα
Delete this message
Reply to this message
Συντάκτης: Rob Gunther
Ημερομηνία:  
Προς: Exim Mailing List
Καινούρια Θέματα: [exim] Exim Logs (P=esmtps / esmtpa)
Αντικείμενο: Re: [exim] Unrouteable address - All recipients fail
Thanks for the feedback guys. I continued to work on the issue after
posting the message. I was able to confirm that the ACL is not the best
place to do the lookups as the information is user specific. It seemed to
set the values acl_m_delivery to be the values of the first recipient of
the message - not good for my case.

I resorted to doing a lookup every time I needed to access a user
preference, rather than calling the data stored in acl_m_delivery.

Rather than doing this:

condition = ${if == {${extract{srs}{$acl_m_delivery}}}{1}}

I do a lookup in the router every time I need a preference like this:

condition = ${if ==
{${extract{srs}{${lookup{$local_part}nwildlsearch{/smtpconfig/domains/$domain/deliverydat}}}}}{1}}

It seems to work, but looks like heck and is more difficult to write and
debug (not sure about performance hit?).

The user's do not actually exist on the box, so I don't think I can
use the require
verify = recipient. The machine just accepts and forwards, getting all
information about preferences and destination server from the deliverydat
file for every domain.

Is there a more elegant way to get user data in the router, like filling a
variable with user preference like I was trying to do in the acl?


Robert G.


On Tue, Feb 18, 2014 at 9:49 PM, Heiko Schlittermann <hs@???>wrote:

> Hi,
>
> Rob Gunther <redrob@???> (Di 18 Feb 2014 05:00:20 CET):
> > I think I figured out my problem, looking for confirmation from experts.
> I
> > do this in the ACL:
> >
> > # Accept any email on port 26
> >   accept condition = ${if=={$received_port}{26}}
> >          set acl_m_delivery =

> >
> ${lookup{$local_part}nwildlsearch{/smtpconfig/domains/$domain/deliverydata}}
> >
> > Access to the server is restricted by firewall, if a delivery is
> attempted
> > on port 26 it is one of our customers. So I lookup the delivery
> > information, which can vary per user. From the deliverydata file I
> extract
> > the destination server, forwarding information etc.
> >
> > I assume that if a message comes in for user1@??? and also to
> > user2@??? that there would be two unique sets of variables
> stored
> > in acl_m_delivery? Each user's personal settings would be associated
> with
> > their copy of the message?
>
> No, you have one single copy of the variable, as you have only one
> single copy of the message.
>
> If you have multiple recipients, each new recipient overwrites the
> acl_m_delivery.
>
> The most simplistic approach: limit the number of recipients per message
> to exactly one. The *downside* of this approach: delivery for the other
> recipients is deferred, each message is transmitted for each recipient.
>
>     # rcpt acl

>
>         defer   message   = please one by one
>                 condition = ${if qt{$recipients_count}{1}}

>
> > If two users get a message and one is valid and one is invalid, like
> this:
> >
> > valid@???
> > invalid@???
> >
> > Currently when using the acl_m_delivery variable the entire message would
> > fail. If the acl_m_delivery information is not unique on a per user
> basis
> > then I have a problem...
>
> You got the problem.
>
> I'm not sure about the maximum size of the acl_ variables, probably you
> can append your information
>
>             set acl_m_delivery = $acl_m_deliveriy:${lookup…}

>
> *But* I think, you're trying to do the message routing in the ACL
> already. But routing is a job for the router, not the ACL. Make sure
> that the routers succeed for valid recipients and fail otherwise. And
> then just do in your rcpt acl:
>
>             # rcpt acl
>             require verify = recipient

>
> should do the job you want.
>
>     Best regards from Dresden/Germany
>     Viele Grüße aus Dresden
>     Heiko Schlittermann
> --
>  SCHLITTERMANN.de ---------------------------- internet & unix support -
>  Heiko Schlittermann, Dipl.-Ing. (TU) - {fon,fax}: +49.351.802998{1,3} -
>  gnupg encrypted messages are welcome --------------- key ID: 7CBF764A -
>  gnupg fingerprint: 9288 F17D BBF9 9625 5ABC  285C 26A9 687E 7CBF 764A -
> (gnupg fingerprint: 3061 CFBF 2D88 F034 E8D2  7E92 EE4E AC98 48D0 359B)-

>
> --
> ## 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/
>