[exim] Message duplication if To/Cc contain alias and one of…

Top Page
Delete this message
Reply to this message
Author: Konstantin Boyandin
Date:  
To: exim-users
Subject: [exim] Message duplication if To/Cc contain alias and one of addresses it's expanded into
Hello,

After defeating message duplication yesterday, I encountered the
similar problem. Namely:

The record in /etc/aliases:

userlist:     userlist,user1


The message sent:

To: user1@???
Cc: userlist@???

Result: two copies received by user1, one by userlist. The records in main.log:

2008-05-06 14:05:38 1JtHF4-00017m-2L <= user1@???
H=diamond.local [10.1.0.54] P=esmtpsa X=TLSv1:AES256-SHA:256
A=PLAIN:user1 S=649 id=48200340.6020408@???
2008-05-06 14:05:38 1JtHF4-00017t-8g <= user1@??? U=exim
P=local S=1921 id=48200340.6020408@???
2008-05-06 14:05:38 1JtHF4-00017m-2L => user1 <user1@???>
R=dspam_router T=dspam_spamcheck
2008-05-06 14:05:38 1JtHF4-00017t-8g => user1 <user1@???>
R=procmail T=procmail
2008-05-06 14:05:38 1JtHF4-00017t-8g Completed
2008-05-06 14:05:38 1JtHF4-000181-Gt <= user1@??? U=exim
P=local S=1904 id=48200340.6020408@???
2008-05-06 14:05:38 1JtHF4-00017m-2L => userlist
<userlist@???> R=dspam_router T=dspam_spamcheck
2008-05-06 14:05:38 1JtHF4-00017m-2L Completed
2008-05-06 14:05:38 1JtHF4-000181-Gt => userlist
<userlist@???> R=procmail T=procmail
2008-05-06 14:05:38 1JtHF4-000181-Gt => user1 <userlist@???>
R=procmail T=procmail
2008-05-06 14:05:38 1JtHF4-000181-Gt Completed

Routers/transports records from exim.conf:

====================== exim.conf routers.transport start
######################################################################
#                      ROUTERS CONFIGURATION                         #
#               Specifies how addresses are handled                  #
######################################################################
#     THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT!       #
# An address is passed to each router in turn until it is accepted.  #
######################################################################


begin routers

dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more

#
# DSPAM-related routers start
#

dspam_router:
    no_verify
    check_local_user
# When to scan a message :
# - it isn't already flagged as spam from Spamassassin
# - it isn't already flagged as spam from DSPAM
# - it isn't already scanned
# - it isn't local
# - it isn't from one internal domain user to another
# - it is less than 2048k in size
    condition   = "${if and { \
        {!def:h_X-Spam-Flag:} \
        {!def:h_X-FILTER-DSPAM:} \
        {!eq {$received_protocol}{local}} \
        { <= {$message_size}{2048k}} \
        }\
        {1}{0}}"
    headers_add  = "X-FILTER-DSPAM: by $primary_hostname on $tod_full"
    driver       = accept
    transport    = dspam_spamcheck
# Which users to run dspam for.
#local_parts = /usr/local/etc/exim/dspam-testers


dspam_addspam_router:
    driver            = accept
    local_part_prefix = spam-
    transport         = dspam_addspam


dspam_falsepositive_router:
    driver            = accept
    local_part_prefix = nospam-
    transport         = dspam_falsepositive


#
# DSPAM-related routers end
#

system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part}lsearch{/etc/aliases}}
# user = exim
check_ancestor = true
# repeat_use = false
file_transport = address_file
pipe_transport = address_pipe


userforward:
driver = redirect
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
file = $home/.forward
allow_filter
no_verify
no_expn
check_ancestor = true
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply

procmail:
driver = accept
check_local_user
require_files = ${local_part}:+${home}/.procmailrc:/usr/bin/procmail
transport = procmail
no_verify

localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = local_delivery
cannot_route_message = Unknown user

######################################################################
#                      TRANSPORTS CONFIGURATION                      #
######################################################################
#                       ORDER DOES NOT MATTER                        #
#     Only one appropriate transport is called for each delivery.    #
######################################################################



begin transports

remote_smtp:
driver = smtp
transport_filter = /etc/mail/headers-rewrite

# This transport invokes procmail to deliver mail
procmail:
driver = pipe
command = "/usr/bin/procmail -d $local_part"
return_path_add
delivery_date_add
envelope_to_add
user = $local_part
initgroups
return_output

local_delivery:
driver = appendfile
file = /var/mail/$local_part
delivery_date_add
envelope_to_add
return_path_add
group = mail
mode = 0660

address_pipe:
driver = pipe
return_output

address_file:
driver = appendfile
group = mail
delivery_date_add
envelope_to_add
return_path_add

address_reply:
driver = autoreply

#
# DSPAM transports start
#

dspam_spamcheck:
    driver = pipe
        command = "/usr/local/dspam-3.8.0/bin/dspam --mode=teft
--feature=noise,whitelist --debug --deliver=innocent,spam --user
${lc:$local_part} -f \
        '$sender_address' -- %u"
    home_directory = "/tmp"
    current_directory = "/tmp"
    user = exim
    group = mail
    log_output = true
    return_fail_output = true
    return_path_add = false
    message_prefix =
    message_suffix =


dspam_addspam:
    driver = pipe
    command = "/usr/local/dspam-3.8.0/bin/dspam --debug --class=spam
--source=error --user \
        ${lc:$local_part} -f '$sender_address' -- %u"
    home_directory = "/tmp"
    current_directory = "/tmp"
    user = exim
    group = mail
    log_output = true
    return_fail_output = true
    return_path_add = false
    message_prefix =
    message_suffix =


dspam_falsepositive:
    driver = pipe
    command = "/usr/local/dspam-3.8.0/bin/dspam --debug
--class=innocent --source=error \
        --deliver=innocent,spam --user ${lc:$local_part}\
        -f '$sender_address' -- %u"
    home_directory = "/tmp"
    current_directory = "/tmp"
    user = exim
    group = mail
    log_output = true
    return_fail_output = true
    return_path_add = false
    message_prefix =
    message_suffix =
====================== exim.conf routers.transport end


Is the mentioned situation expected?

Thanks.