OSEC

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 (madt.e-technik.uni-dortmund.de)
Date: Sat Feb 10 2001 - 12:04:54 CST

  • Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    wietseporcupine.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-testmeemma1.emma.line.org
                                            (Command died with status 1: "exit 1")
                                             t2emma1.emma.line.org

    -> correct.

    testme: t1 t2
    t1: |exit 0
    t2: |exit 1

    4145CA2029 319 Sat Feb 10 18:52:31 madt.e-technik.uni-dortmund.de
                                            (Command died with status 1: "exit 1")
                                             t2emma1.emma.line.org
                                             testmeemma1.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