Re: [exim] Exim sends message twice if alias points to itsel…

Startseite
Nachricht löschen
Nachricht beantworten
Autor: Konstantin Boyandin
Datum:  
To: exim-users
Betreff: Re: [exim] Exim sends message twice if alias points to itself
Hello,

2008/5/4 Heiko Schlittermann <hs@???>:
> (you should take care to "group reply" (or "list reply") if you do not
> intend to send a personal message. And I'd suppose that your message
> wasn't meant as personal.)


Sorry, mea culpa, I will be more careful.

> Konstantin Boyandin <temmokan@???> (So 04 Mai 2008 01:23:18 CEST):
>
> > Hello,
> >
> > 2008/5/3 Heiko Schlittermann <hs@???>:
> > >
>
>
> > >     # exim4 -v -bv mobst
>  > >     heiko@???
>  > >         <-- mobst@???
>  > >       router = localuser, transport = local_delivery
>  > >     mobst@???
>  > >         <-- mobst@???
>  > >       router = localuser, transport = local_delivery

> > >
> > >
>  > >     # exim4 -bV
>  > >     Exim version 4.68 #1 built 03-Nov-2007 08:11:35
>  > >     Copyright (c) University of Cambridge 2006
>  > >     Berkeley DB: Sleepycat Software: Berkeley DB 4.3.29: (September  6, 2005)
>  > >     Support for: crypteq iconv() IPv6 PAM Perl GnuTLS move_frozen_messages Content_Scanning Old_Demime
>  > >     Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql nis nis0 passwd pgsql sqlite
>  > >     Authenticators: cram_md5 cyrus_sasl dovecot plaintext spa
>  > >     Routers: accept dnslookup ipliteral iplookup manualroute queryprogram redirect
>  > >     Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
>  > >     Fixed never_users: 0
>  > >     Size of off_t: 8
>  > >     Configuration file is /etc/exim4/exim4.conf

> > >
> > > So - I can't see that duplicate delivery *would* happen. What does
> > > 'exim4 -v -bV' show on your system?
> >
> > [root@monstera ~]# exim -v -bV
> > Exim version 4.62 #1 built 02-May-2006 07:36:25
> > Copyright (c) University of Cambridge 2006
> > Berkeley DB: Sleepycat Software: Berkeley DB 4.3.29: (March 24, 2006)
> > Support for: crypteq iconv() IPv6 PAM Perl TCPwrappers OpenSSL
> > Content_Scanning Old_Demime
> > Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz
> > dnsdb dsearch ldap ldapdn ldapm mysql nis nis0 nisplus passwd pgsql
> > sqlite
> > Authenticators: cram_md5 cyrus_sasl plaintext spa
> > Routers: accept dnslookup ipliteral manualroute queryprogram redirect
> > Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
> > Fixed never_users: 0
> > Size of off_t: 8
> > Configuration file is /etc/exim/exim.conf
>
> Ok, and what does
>
>     exim4 -v -bv userlist

>
> tell you? Do you have the dups there already?


Yes, I have:

[root@monstera lists]# exim -v -bv userlist
user1@???
    <-- itelsib-adm@???
  router = localuser, transport = local_delivery
user2@???
    <-- itelsib-adm@???
  router = localuser, transport = local_delivery
userlist@???
    <-- itelsib-adm@???
  router = localuser, transport = local_delivery


> (Your Exim version is a bit historic, but aliases and forwarding
> is stuff already known for long time, so I'd think there should be no
> relevant bug.)


I have installed the Exim with yum, thisis why it can be somewhat out-of-date

> Maybe you can attach your config file too, since I'd guess that it is a
> config problem you're fighting with.


I insert the whole config below, comments mostly removed

------------------ Exim conf below

######################################################################
#                  Runtime configuration file for Exim               #
######################################################################


queue_list_requires_admin = false

primary_hostname = example.com

domainlist local_domains = @ : example.ru : monstera.local : localhost
: localhost.localdomain
domainlist relay_to_domains =
hostlist relay_from_hosts = 127.0.0.1 : 10.0.0.0/24
hostlist auth_relay_hosts = *


acl_smtp_mail = acl_check_mail
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime

av_scanner = clamd:/var/run/clamd.exim/clamd.sock

tls_advertise_hosts = *

tls_certificate = /etc/pki/tls/certs/exim.pem
tls_privatekey = /etc/pki/tls/private/exim.pem

daemon_smtp_ports = 25 : 465 : 587
tls_on_connect_ports = 465

never_users = root

host_lookup = *

auth_advertise_hosts = ${if eq {$tls_cipher}{}{}{*}}

rfc1413_hosts = *
rfc1413_query_timeout = 5s


ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d

######################################################################
#                       ACL CONFIGURATION                            #
#         Specifies access control lists for incoming SMTP mail      #
######################################################################


begin acl

acl_check_mail:

  deny condition = ${if eq{$sender_helo_name}{} {1}}
       message = Nice boys say HELO first


accept

.acl_check_rcpt:

accept hosts = :

  deny    message       = Restricted characters in address
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]


  deny    message       = Restricted characters in address
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./


  accept  local_parts   = *
          domains       = +local_domains


  require verify        = sender


  accept  hosts         = +relay_from_hosts
          control       = submission


  accept  authenticated = *
          control       = submission


  require message = relay not permitted
          domains = +local_domains : +relay_to_domains


require verify = recipient

accept

acl_check_data:

accept

acl_check_mime:

  deny message = Blacklisted file extension detected
       condition = ${if match \
                        {${lc:$mime_filename}} \
                        {\N(\.exe|\.pif|\.bat|\.scr|\.lnk|\.com)$\N} \
                     {1}{0}}


accept


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

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

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

userforward:
driver = redirect
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
file = $home/.forward
allow_filter
no_verify
no_expn
check_ancestor
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

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
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 =


#
# DSPAM transports end
#

######################################################################
#                      RETRY CONFIGURATION                           #
######################################################################


begin retry

*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h


######################################################################
#                      REWRITE CONFIGURATION                         #
######################################################################


begin rewrite

######################################################################
#                   AUTHENTICATION CONFIGURATION                     #
######################################################################


begin authenticators

PLAIN:
  driver                     = plaintext
  server_set_id              = $auth2
  server_prompts             = :
  server_condition           = ${if saslauthd{{$2}{$3}{smtp}} {1}}
  server_advertise_condition = ${if def:tls_cipher }


------------------ Exim conf above

Thanks.

With all respect,

Konstantin