Gordon Messmer writes:
> Sam Varshavchik wrote:
>>> From: Gordon Messmer [mailto:yinyang@...]
>>>> I can conceive of scenarios more likely to occur if you like.
>>>> Perhaps your Courier server is on a private network, and it relays
>>>> mail out through a host dedicated to that task (maybe that one
>>>> provides additional filtering). Your aliases to off-site hosts,
>>>> then, get delivered to your "smart host" with instructions not to
>>>> notify users when there are delivery failures.
>> I'm still waiting for an address alias to enter the picture.
> Do we have to justify our use of aliases?
Well, since you're claiming that turning off DSNs on an alias forward causes
problems, and you would like to provide an example of that, your examples
should, actually, involve an alias, shouldn't they?
> If I have an alias on a mail
> server that goes elsewhere, I simply expect delivery to work or else
> tell me why it can't.
_You_ expect to be notified about a bounce, NOT the original sender. The
original sender really doesn't care about the fact that support@...
forwards the mail to twenty recipients, ten of which are on vacation, and
have a vacation autoresponder going.
> As before, if you think I'm wrong, at least help me out by pointing me
> at the general location where I should modify courier to suit my needs,
There are two places where aliased addresses are added. One place handles
an alias that contains two or more addresses; the other place handles an
alias that contains a single address. There are slightly different
semantics for both cases.
Multi-recipient aliases are processed by RcptAliasHandler::Alias() in
if (listcount == 1)
if (submitptr->ChkRecipient(aliasbuf) == 0)
submitptr->AddReceipient(aliasbuf, "", "N", 0);
if (submitptr->ChkRecipient(p) == 0)
submitptr->AddReceipient(p, "", "N", 0);
The determination of whether an alias expanded to one or multiple addresses
is handled "on the fly". The first address that comes out of an alias is
saved in a buffer. When the next one comes out, the first saved address is
processed before the second one.
The "N" parameter to AddReceipient is what shuts off DSNs in this case.
Replacing the constant with rcptinfoptr->dsn should use the same DSN setting
for each alias address as the original list address's DSN.
The other situation, with a single-alias recipient, DSNs are turned off only
if the Courier-specific VERP SMTP extension was requested, and are left
unchanged in other cases, so nothing needs to be done there.