|
Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com |
From: Matthias Andree (ma
dt.e-technik.uni-dortmund.de)Date: Sat Feb 10 2001 - 12:04:54 CST
wietse
porcupine.org (Wietse Venema) writes:
> Matthias Andree:
> > A reasonable, WORKING approximation of:
> >
> > owner-foo: somebody
> > foo: bar1 bar2
> >
> > is:
> >
> > foo: "|/usr/sbin/sendmail -fowner-foo bar1 bar2"
>
> This solution does not solve the original problem:
>
> One alias expands to multiple addresses; one of the addresses
> needs to be deferred (for example, it is a |command). All
> recipients in the expansion will receive the mail again.
No, it works around current Postfix bugs or misdesign.
Again:
testme: |sendmail t1 t2
t1: |exit 0
t2: |exit 1
57020A2066 479 Sat Feb 10 18:50:50 owner-testme
emma1.emma.line.org
(Command died with status 1: "exit 1")
t2
emma1.emma.line.org
-> correct.
testme: t1 t2
t1: |exit 0
t2: |exit 1
4145CA2029 319 Sat Feb 10 18:52:31 ma
dt.e-technik.uni-dortmund.de
(Command died with status 1: "exit 1")
t2
emma1.emma.line.org
testme
emma1.emma.line.org
-> wrong, has testme mentioned in its todo list. testme simply and
clearly does not belong here, I have written "testme: t1 t2", not
"testme: testme t1 t2". Why is testme recorded here? For been_here
matching, maybe.
Picture:
foo: bar1 bar2
with temporary failure on bar2 expands to: bar2 foo
foo: |sendmail bar1 bar2
with temporary failure on bar2 expands to: bar2
Do you see the difference? foo is missing from the expansion in the
second case. Currently, Postfix is not removing the original recipient
if it has expanded it properly. Why in hell does it need to keep the
original recipient and why does it discard delivery information?
> Your solution also does not handle the case where an alias name
> appears in its expansion. Sendmail will deliver the mail to the
> user. Your solution causes a mail delivery loop.
I _always_ use "foo: \foo, bar" aliases. I NEVER rely on mailer's
recursion elimination.
> I repeat my requirements for the last time.
>
> 1 - When an alias name appears in its own expansion, mail is
> sent to the user instead.
> 2 - When a user appears in her own .forward file, mail is sent
> to the mailbox instead.
> Requirements 1 and 2 combine recursively.
Yes. Why does this still need to the original recipient? If it's for
switching from "expand" to "deliver", then track "expanded: foo" rather
than just copying "foo" to the recipient todo list.
Still, there is not reason why THESE require duplicates or copying the
original recipient.
> 3 - Robustness: must run in a finite amount of memory, even when
> delivering to an alias with millions of expansions.
Copying the done-addresses with a done-flag to prevent duplicates does
not require more memory (apart from the 50 flag bits or bytes or maybe
long words) than the original message had. Tracking DONE addresses, even
commands, is safe since you NEVER deliver to DONE addresses.
> 4 - Security: does not store |command or /file/name as TODO
> destinations.
ACK.
> However, your solution does not solve the original problem:
>
> One alias expands to multiple addresses; one of the addresses
> needs to be deferred (for example, it is a |command). All
> recipients in the expansion will receive the mail again.
Yes, and this problem must be solved. Wild duping is a show-stopper.
Imagine you expand to 200 addresses, 4 queue files with 50 recipients
each, in each of these 50, one must be deferred. So you're having the
original recipient 4 times, generating 796 duplicates! This must not
happen. This is not robust.
Would you care to explain as to why the current behaviour (duping) is
1. technically correct
2. a technical necessity/the only available solution?
I see all of your requirements, I have yet to see why these MUST cause
the misbehaviour I am seeing.
-- Matthias Andree
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]