[exim] Getting duplicate deliveries with redirect router

Top Page
Delete this message
Reply to this message
Author: Gedalya
Date:  
To: Exim-users
Subject: [exim] Getting duplicate deliveries with redirect router
Hi,

When user1 sends a message to user2 and user3, and user3 also gets generated *twice* by a redirect router, user3 ends up getting the message twice.

I've created a simplified config that seems to reproduce the core of the issue I'm having on a more complex system.

I would like to see the recipients deduplicated. Am I doing something wrong?

Thanks for your attention,

Gedalya


bcc:
  debug_print = "R: bcc for $local_part@$domain"
  driver = redirect
  data = ${lookup{$local_part}lsearch{CONFDIR/bcc}}
  verify = false
  unseen = true
  repeat_use = false

---- file: bcc ----

user2: user3
user3: user3

---- mainlog ----

1kcysT-0015w2-Qt <= user1@??? U=root P=local S=291 T="test"
1kcysT-0015w2-Qt => user2 <user2@???> R=local_user T=mail_spool
1kcysT-0015w2-Qt => user3 <user2@???> R=local_user T=mail_spool
1kcysT-0015w2-Qt => user3 <user3@???> R=local_user T=mail_spool

--- debug ----

# exim -d -f user1 user2 user3
Exim version 4.94 uid=0 gid=0 pid=261290 D=f7715cfd
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DANE DKIM DNSSEC Event I18N OCSP PIPE_CONNECT PRDR SOCKS TCP_Fast_Open
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Configure owner: 0:0
Size of off_t: 8
Compiler: GCC [10.2.0]
Library version: Glibc: Compile: 2.31
                        Runtime: 2.31
Library version: BDB: Compile: Berkeley DB 5.3.28: (September  9, 2013)
                      Runtime: Berkeley DB 5.3.28: (September  9, 2013)
Library version: GnuTLS: Compile: 3.6.15
                         Runtime: 3.6.15
Library version: IDN2: Compile: 2.3.0
                       Runtime: 2.3.0
Library version: Stringprep: Compile: 1.33
                             Runtime: 1.33
Library version: PCRE: Compile: 8.39
                       Runtime: 8.39 2016-06-14
Total 14 lookups
WHITELIST_D_MACROS: "OUTGOING"
TRUSTED_CONFIG_LIST: "/etc/exim4/trusted_configs"
changed uid/gid: forcing real = effective
  uid=0 gid=0 pid=261290
  auxiliary group list: <none>
configuration file is /etc/exim4/exim4.conf
log selectors = 0000cfbc 99005022 00000007
cwd=/etc/exim4 6 args: exim -d -f user1 user2 user3
trusted user
admin user
changed uid/gid: privilege not needed
  uid=101 gid=104 pid=261290
  auxiliary group list: 104
seeking password data for user "mail": cache not available
getpwnam() succeeded uid=8 gid=8
originator: uid=0 gid=0 login=root name=
sender address = user1@???
set_process_info: 261290 accepting a local non-SMTP message from <user1@???>
spool directory space = 19520268K inodes = 3156056 check_space = 10240K inodes = 100 msg_size = 0
log directory space = 19520268K inodes = 3156056 check_space = 10240K inodes = 100
Sender: user1@???
Recipients:
  user2
  user3
Subject: test
search_tidyup called

>>Headers received:

Subject: test

rewrite_one_header: type=F:
  From: user1@???
search_tidyup called
>>Headers after rewriting and local additions:

  Subject: test
I Message-Id: <E1kcywp-0015yM-GC@???>
F From: user1@???
  Date: Thu, 12 Nov 2020 06:50:39 +0800

Data file name: /var/spool/exim4//input//1kcywp-0015yM-GC-D
test
.

Data file written for message 1kcywp-0015yM-GC
>>Generated Received: header line

P Received: from root by ws2.gedalya.net with local (Exim 4.94)
    (envelope-from <user1@???>)
    id 1kcywp-0015yM-GC; Thu, 12 Nov 2020 06:50:42 +0800
calling local_scan(); timeout=300
local_scan() returned 0 NULL
Writing spool header file: /var/spool/exim4//input//hdr.1kcywp-0015yM-GC
DSN: **** SPOOL_OUT - address: <user2@???> errorsto: <NULL> orcpt: <NULL> dsn_flags: 0x0
DSN: **** SPOOL_OUT - address: <user3@???> errorsto: <NULL> orcpt: <NULL> dsn_flags: 0x0
Renaming spool header file: /var/spool/exim4//input//1kcywp-0015yM-GC-H
Size of headers = 285
LOG: MAIN
  <= user1@??? U=root P=local S=291 T="test"
search_tidyup called
fresh-exec forking for local-accept-delivery
fresh-exec forked for local-accept-delivery: 261298
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=261290 (fresh-exec) terminating with rc=0 >>>>>>>>>>>>>>>>

postfork: local-accept-delivery
exec /usr/sbin/exim4 -d=0xf7715cfd -MCd local-accept-delivery -Mc 1kcywp-0015yM-GC
root@ws2:/etc/exim4#
root@ws2:/etc/exim4# Exim version 4.94 uid=101 gid=104 pid=261298 D=f7715cfd
Support for: crypteq iconv() IPv6 GnuTLS move_frozen_messages DANE DKIM DNSSEC Event I18N OCSP PIPE_CONNECT PRDR SOCKS TCP_Fast_Open
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch nis nis0 passwd
Authenticators: cram_md5 plaintext
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore autoreply lmtp pipe smtp
Fixed never_users: 0
Configure owner: 0:0
Size of off_t: 8
Compiler: GCC [10.2.0]
Library version: Glibc: Compile: 2.31
                        Runtime: 2.31
Library version: BDB: Compile: Berkeley DB 5.3.28: (September  9, 2013)
                      Runtime: Berkeley DB 5.3.28: (September  9, 2013)
Library version: GnuTLS: Compile: 3.6.15
                         Runtime: 3.6.15
Library version: IDN2: Compile: 2.3.0
                       Runtime: 2.3.0
Library version: Stringprep: Compile: 1.33
                             Runtime: 1.33
Library version: PCRE: Compile: 8.39
                       Runtime: 8.39 2016-06-14
Total 14 lookups
WHITELIST_D_MACROS: "OUTGOING"
TRUSTED_CONFIG_LIST: "/etc/exim4/trusted_configs"
changed uid/gid: forcing real = effective
  uid=0 gid=104 pid=261298
  auxiliary group list: <none>
configuration file is /etc/exim4/exim4.conf
log selectors = 0000cfbc 99005022 00000007
cwd=/var/spool/exim4 6 args: /usr/sbin/exim4 -d=0xf7715cfd -MCd local-accept-delivery -Mc 1kcywp-0015yM-GC
trusted user
admin user
dropping to exim gid; retaining priv uid
seeking password data for user "mail": cache not available
getpwnam() succeeded uid=8 gid=8
set_process_info: 261298 delivering specified messages
set_process_info: 261298 delivering 1kcywp-0015yM-GC
Trying spool file /var/spool/exim4//input//1kcywp-0015yM-GC-D
reading spool file 1kcywp-0015yM-GC-H
user=root uid=0 gid=0 sender=user1@???
sender_local=0 ident=root
Non-recipients:
Empty Tree
---- End of tree ----
recipients_count=2
**** SPOOL_IN - No additional fields
**** SPOOL_IN - No additional fields
body_linecount=1 message_linecount=7
DSN: set orcpt:   flags: 0x0
DSN: set orcpt:   flags: 0x0
Delivery address list:
  user2@???
  user3@???
 locking /var/spool/exim4/db/retry.lockfile
 locked  /var/spool/exim4/db/retry.lockfile
 EXIM_DBOPEN: file </var/spool/exim4/db/retry> dir </var/spool/exim4/db> flags=O_RDONLY
 returned from EXIM_DBOPEN: 0x555c3422f970
 opened hints database /var/spool/exim4/db/retry: flags=O_RDONLY
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: user2@???
unique = user2@???
 dbfn_read: key=R:ws2.gedalya.net
 dbfn_read: key=R:user2@???
 dbfn_read: key=R:user2@???:<user1@???>
no   domain  retry record
no   address retry record
user2@???: queued for routing
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: user3@???
unique = user3@???
 dbfn_read: key=R:ws2.gedalya.net
 dbfn_read: key=R:user3@???
 dbfn_read: key=R:user3@???:<user1@???>
no   domain  retry record
no   address retry record
user3@???: queued for routing
 EXIM_DBCLOSE(0x555c3422f970)
 closed hints database and lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

routing user3@???
--------> bcc router <--------
local_part=user3 domain=ws2.gedalya.net
R: bcc for user3@???
calling bcc router
rda_interpret (string): '${lookup{$local_part}lsearch{/etc/exim4/bcc}}'
 search_open: lsearch "/etc/exim4/bcc"
 search_find: file="/etc/exim4/bcc"
   key="user3" partial=-1 affix=NULL starflags=0 opts=NULL
 LRU list:
   7/etc/exim4/bcc
   End
 internal_search_find: file="/etc/exim4/bcc"
   type=lsearch key="user3" opts=NULL
 file lookup required for user3
   in /etc/exim4/bcc
 lookup yielded: user3
expanded: 'user3'
file is not a filter file
parse_forward_list: user3
extract item: user3
bcc router generated user3@???
  errors_to=NULL transport=NULL
  uid=unset gid=unset home=NULL
routed by bcc router (unseen)
  envelope to: user3@???
  transport: <none>
"unseen" set: replicated user3@???
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

routing user2@???
--------> bcc router <--------
local_part=user2 domain=ws2.gedalya.net
R: bcc for user2@???
calling bcc router
rda_interpret (string): '${lookup{$local_part}lsearch{/etc/exim4/bcc}}'
 search_open: lsearch "/etc/exim4/bcc"
   cached open
 search_find: file="/etc/exim4/bcc"
   key="user2" partial=-1 affix=NULL starflags=0 opts=NULL
 LRU list:
   7/etc/exim4/bcc
   End
 internal_search_find: file="/etc/exim4/bcc"
   type=lsearch key="user2" opts=NULL
 file lookup required for user2
   in /etc/exim4/bcc
 lookup yielded: user3
expanded: 'user3'
file is not a filter file
parse_forward_list: user3
extract item: user3
bcc router generated user3@???
  errors_to=NULL transport=NULL
  uid=unset gid=unset home=NULL
routed by bcc router (unseen)
  envelope to: user2@???
  transport: <none>
"unseen" set: replicated user2@???
 locking /var/spool/exim4/db/retry.lockfile
 locked  /var/spool/exim4/db/retry.lockfile
 EXIM_DBOPEN: file </var/spool/exim4/db/retry> dir </var/spool/exim4/db> flags=O_RDONLY
 returned from EXIM_DBOPEN: 0x555c3422f970
 opened hints database /var/spool/exim4/db/retry: flags=O_RDONLY
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: user2@???
unique = \0\user2@???
 dbfn_read: key=R:ws2.gedalya.net
 dbfn_read: key=R:user2@???
 dbfn_read: key=R:user2@???:<user1@???>
no   domain  retry record
no   address retry record
user2@???: queued for routing
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: user3@???
unique = user3@???
 dbfn_read: key=R:ws2.gedalya.net
 dbfn_read: key=R:user3@???
 dbfn_read: key=R:user3@???:<user1@???>
no   domain  retry record
no   address retry record
user3@???: queued for routing
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: user3@???
unique = \0\user3@???
 dbfn_read: key=R:ws2.gedalya.net
 dbfn_read: key=R:user3@???
 dbfn_read: key=R:user3@???:<user1@???>
no   domain  retry record
no   address retry record
user3@???: queued for routing
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Considering: user3@???
unique = \0\user3@???
 dbfn_read: key=R:ws2.gedalya.net
 dbfn_read: key=R:user3@???
 dbfn_read: key=R:user3@???:<user1@???>
no   domain  retry record
no   address retry record
user3@???: queued for routing
 EXIM_DBCLOSE(0x555c3422f970)
 closed hints database and lockfile
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

routing user3@???
--------> bcc router <--------
bcc router skipped: previously routed user3@???
--------> dnslookup router <--------
local_part=user3 domain=ws2.gedalya.net
checking domains
ws2.gedalya.net in "@:localhost:ws2.gedalya.net"? yes (matched "@")
data from lookup saved for cache for +local_domains: key 'ws2.gedalya.net' value 'ws2.gedalya.net'
ws2.gedalya.net in "! +local_domains"? no (matched "! +local_domains")
dnslookup router skipped: domains mismatch
--------> real_local router <--------
local_part=user3 domain=ws2.gedalya.net
real_local router skipped: prefix mismatch
--------> system_aliases router <--------
local_part=user3 domain=ws2.gedalya.net
checking domains
cached yes match for +local_domains
cached lookup data = ws2.gedalya.net
ws2.gedalya.net in "+local_domains"? yes (matched "+local_domains" - cached)
R: system_aliases for user3@???
checking "condition" "${if match_ip{$sender_host_address}{:@[]}{1}{0}}"...
 in ":@[]"? yes (matched "")
calling system_aliases router
rda_interpret (string): '${lookup{$local_part}lsearch{/etc/aliases}}'
 search_open: lsearch "/etc/aliases"
 search_find: file="/etc/aliases"
   key="user3" partial=-1 affix=NULL starflags=0 opts=NULL
 LRU list:
   7/etc/aliases
   7/etc/exim4/bcc
   End
 internal_search_find: file="/etc/aliases"
   type=lsearch key="user3" opts=NULL
 file lookup required for user3
   in /etc/aliases
 lookup failed
expanded: ''
file is not a filter file
parse_forward_list:
system_aliases router declined for user3@???
--------> local_user router <--------
local_part=user3 domain=ws2.gedalya.net
checking domains
cached yes match for +local_domains
cached lookup data = ws2.gedalya.net
ws2.gedalya.net in "+local_domains"? yes (matched "+local_domains" - cached)
checking local_parts
user3 in "! root"? yes (end of list)
checking for local user
seeking password data for user "user3": cache not available
getpwnam() succeeded uid=1006 gid=1006
R: local_user for user3@???
checking "condition" "${if match_ip{$sender_host_address}{:@[]}{1}{0}}"...
 in ":@[]"? yes (matched "")
calling local_user router
local_user router called for user3@???
  domain = ws2.gedalya.net
set transport mail_spool
queued for mail_spool transport: local_part = user3
domain = ws2.gedalya.net
  errors_to=NULL
  domain_data=ws2.gedalya.net local_part_data=user3
routed by local_user router
  envelope to: user3@???
  transport: mail_spool
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

routing user3@???
--------> dnslookup router <--------
local_part=user3 domain=ws2.gedalya.net
checking domains
ws2.gedalya.net in "@:localhost:ws2.gedalya.net"? yes (matched "@")
data from lookup saved for cache for +local_domains: key 'ws2.gedalya.net' value 'ws2.gedalya.net'
ws2.gedalya.net in "! +local_domains"? no (matched "! +local_domains")
dnslookup router skipped: domains mismatch
--------> real_local router <--------
local_part=user3 domain=ws2.gedalya.net
real_local router skipped: prefix mismatch
--------> system_aliases router <--------
local_part=user3 domain=ws2.gedalya.net
checking domains
cached yes match for +local_domains
cached lookup data = ws2.gedalya.net
ws2.gedalya.net in "+local_domains"? yes (matched "+local_domains" - cached)
R: system_aliases for user3@???
checking "condition" "${if match_ip{$sender_host_address}{:@[]}{1}{0}}"...
 in ":@[]"? yes (matched "")
calling system_aliases router
rda_interpret (string): '${lookup{$local_part}lsearch{/etc/aliases}}'
 search_open: lsearch "/etc/aliases"
   cached open
 search_find: file="/etc/aliases"
   key="user3" partial=-1 affix=NULL starflags=0 opts=NULL
 LRU list:
   7/etc/aliases
   7/etc/exim4/bcc
   End
 internal_search_find: file="/etc/aliases"
   type=lsearch key="user3" opts=NULL
 cached data used for lookup of user3
   in /etc/aliases
 lookup failed
expanded: ''
file is not a filter file
parse_forward_list:
system_aliases router declined for user3@???
--------> local_user router <--------
local_part=user3 domain=ws2.gedalya.net
checking domains
cached yes match for +local_domains
cached lookup data = ws2.gedalya.net
ws2.gedalya.net in "+local_domains"? yes (matched "+local_domains" - cached)
checking local_parts
user3 in "! root"? yes (end of list)
checking for local user
seeking password data for user "user3": using cached result
getpwnam() succeeded uid=1006 gid=1006
R: local_user for user3@???
checking "condition" "${if match_ip{$sender_host_address}{:@[]}{1}{0}}"...
 in ":@[]"? yes (matched "")
calling local_user router
local_user router called for user3@???
  domain = ws2.gedalya.net
queued for mail_spool transport: local_part = user3
domain = ws2.gedalya.net
  errors_to=NULL
  domain_data=ws2.gedalya.net local_part_data=user3
routed by local_user router
  envelope to: user3@???
  transport: mail_spool
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

routing user3@???
--------> bcc router <--------
bcc router skipped: previously routed user2@???
--------> dnslookup router <--------
local_part=user3 domain=ws2.gedalya.net
checking domains
ws2.gedalya.net in "@:localhost:ws2.gedalya.net"? yes (matched "@")
data from lookup saved for cache for +local_domains: key 'ws2.gedalya.net' value 'ws2.gedalya.net'
ws2.gedalya.net in "! +local_domains"? no (matched "! +local_domains")
dnslookup router skipped: domains mismatch
--------> real_local router <--------
local_part=user3 domain=ws2.gedalya.net
real_local router skipped: prefix mismatch
--------> system_aliases router <--------
local_part=user3 domain=ws2.gedalya.net
checking domains
cached yes match for +local_domains
cached lookup data = ws2.gedalya.net
ws2.gedalya.net in "+local_domains"? yes (matched "+local_domains" - cached)
R: system_aliases for user3@???
checking "condition" "${if match_ip{$sender_host_address}{:@[]}{1}{0}}"...
 in ":@[]"? yes (matched "")
calling system_aliases router
rda_interpret (string): '${lookup{$local_part}lsearch{/etc/aliases}}'
 search_open: lsearch "/etc/aliases"
   cached open
 search_find: file="/etc/aliases"
   key="user3" partial=-1 affix=NULL starflags=0 opts=NULL
 LRU list:
   7/etc/aliases
   7/etc/exim4/bcc
   End
 internal_search_find: file="/etc/aliases"
   type=lsearch key="user3" opts=NULL
 cached data used for lookup of user3
   in /etc/aliases
 lookup failed
expanded: ''
file is not a filter file
parse_forward_list:
system_aliases router declined for user3@???
--------> local_user router <--------
local_part=user3 domain=ws2.gedalya.net
checking domains
cached yes match for +local_domains
cached lookup data = ws2.gedalya.net
ws2.gedalya.net in "+local_domains"? yes (matched "+local_domains" - cached)
checking local_parts
user3 in "! root"? yes (end of list)
checking for local user
seeking password data for user "user3": using cached result
getpwnam() succeeded uid=1006 gid=1006
R: local_user for user3@???
checking "condition" "${if match_ip{$sender_host_address}{:@[]}{1}{0}}"...
 in ":@[]"? yes (matched "")
calling local_user router
local_user router called for user3@???
  domain = ws2.gedalya.net
queued for mail_spool transport: local_part = user3
domain = ws2.gedalya.net
  errors_to=NULL
  domain_data=ws2.gedalya.net local_part_data=user3
routed by local_user router
  envelope to: user3@???
  transport: mail_spool
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

routing user2@???
--------> dnslookup router <--------
local_part=user2 domain=ws2.gedalya.net
checking domains
ws2.gedalya.net in "@:localhost:ws2.gedalya.net"? yes (matched "@")
data from lookup saved for cache for +local_domains: key 'ws2.gedalya.net' value 'ws2.gedalya.net'
ws2.gedalya.net in "! +local_domains"? no (matched "! +local_domains")
dnslookup router skipped: domains mismatch
--------> real_local router <--------
local_part=user2 domain=ws2.gedalya.net
real_local router skipped: prefix mismatch
--------> system_aliases router <--------
local_part=user2 domain=ws2.gedalya.net
checking domains
cached yes match for +local_domains
cached lookup data = ws2.gedalya.net
ws2.gedalya.net in "+local_domains"? yes (matched "+local_domains" - cached)
R: system_aliases for user2@???
checking "condition" "${if match_ip{$sender_host_address}{:@[]}{1}{0}}"...
 in ":@[]"? yes (matched "")
calling system_aliases router
rda_interpret (string): '${lookup{$local_part}lsearch{/etc/aliases}}'
 search_open: lsearch "/etc/aliases"
   cached open
 search_find: file="/etc/aliases"
   key="user2" partial=-1 affix=NULL starflags=0 opts=NULL
 LRU list:
   7/etc/aliases
   7/etc/exim4/bcc
   End
 internal_search_find: file="/etc/aliases"
   type=lsearch key="user2" opts=NULL
 file lookup required for user2
   in /etc/aliases
 lookup failed
expanded: ''
file is not a filter file
parse_forward_list:
system_aliases router declined for user2@???
--------> local_user router <--------
local_part=user2 domain=ws2.gedalya.net
checking domains
cached yes match for +local_domains
cached lookup data = ws2.gedalya.net
ws2.gedalya.net in "+local_domains"? yes (matched "+local_domains" - cached)
checking local_parts
user2 in "! root"? yes (end of list)
checking for local user
seeking password data for user "user2": cache not available
getpwnam() succeeded uid=1005 gid=1005
R: local_user for user2@???
checking "condition" "${if match_ip{$sender_host_address}{:@[]}{1}{0}}"...
 in ":@[]"? yes (matched "")
calling local_user router
local_user router called for user2@???
  domain = ws2.gedalya.net
queued for mail_spool transport: local_part = user2
domain = ws2.gedalya.net
  errors_to=NULL
  domain_data=ws2.gedalya.net local_part_data=user2
routed by local_user router
  envelope to: user2@???
  transport: mail_spool
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

After routing:
  Local deliveries:
    user2@???
    user3@???
    user3@???
    user3@???
  Remote deliveries:
  Failed addresses:
  Deferred addresses:
search_tidyup called
\0\user3@??? is a duplicate address: discarded
>>>>>>>>>>>>>>>> Local deliveries >>>>>>>>>>>>>>>>

--------> user2@??? <--------
 locking /var/spool/exim4/db/retry.lockfile
 locked  /var/spool/exim4/db/retry.lockfile
 EXIM_DBOPEN: file </var/spool/exim4/db/retry> dir </var/spool/exim4/db> flags=O_RDONLY
 returned from EXIM_DBOPEN: 0x555c3423b1e0
 opened hints database /var/spool/exim4/db/retry: flags=O_RDONLY
 dbfn_read: key=T:user2@???
no retry record exists
 EXIM_DBCLOSE(0x555c3423b1e0)
 closed hints database and lockfile
search_tidyup called
local-accept-delivery forking for delivery-local
local-accept-delivery forked for delivery-local: 261301
postfork: delivery-local
changed uid/gid: local delivery to user2 <user2@???> transport=mail_spool
  uid=1005 gid=8 pid=261301
  auxiliary group list: <none>
  home=/home/user2 current=/home/user2
set_process_info: 261301 delivering 1kcywp-0015yM-GC to user2 using mail_spool
T: appendfile for user2@???
appendfile transport entered
appendfile: mode=660 notify_comsat=0 quota=0 warning=0
  file=/var/mail/user2 format=unix
  message_prefix=From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}\n
  message_suffix=\n
  maildir_use_size_file=no
  locking by lockfile fcntl
lock name: /var/mail/user2.lock
hitch name: /var/mail/user2.lock.ws2.gedalya.net.5fac6ac2.0003fcb5
lock file created
mailbox /var/mail/user2 is locked
writing to file /var/mail/user2
writing data block fd=6 size=52 timeout=0
cannot use sendfile for body: spoolfile not wireformat
writing data block fd=6 size=410 timeout=0
writing data block fd=6 size=1 timeout=0
appendfile yields 0 with errno=0 more_errno=0
search_tidyup called
journalling user2@???/mail_spool
mail_spool transport returned OK for user2@???
post-process user2@??? (0)
user2@??? delivered
LOG: MAIN
  => user2 <user2@???> R=local_user T=mail_spool
--------> user3@??? <--------
 locking /var/spool/exim4/db/retry.lockfile
 locked  /var/spool/exim4/db/retry.lockfile
 EXIM_DBOPEN: file </var/spool/exim4/db/retry> dir </var/spool/exim4/db> flags=O_RDONLY
 returned from EXIM_DBOPEN: 0x555c3423b1e0
 opened hints database /var/spool/exim4/db/retry: flags=O_RDONLY
 dbfn_read: key=T:user3@???
no retry record exists
 EXIM_DBCLOSE(0x555c3423b1e0)
 closed hints database and lockfile
search_tidyup called
local-accept-delivery forking for delivery-local
local-accept-delivery forked for delivery-local: 261302
postfork: delivery-local
changed uid/gid: local delivery to user3 <user3@???> transport=mail_spool
  uid=1006 gid=8 pid=261302
  auxiliary group list: <none>
  home=/home/user3 current=/home/user3
set_process_info: 261302 delivering 1kcywp-0015yM-GC to user3 using mail_spool
T: appendfile for user3@???
appendfile transport entered
appendfile: mode=660 notify_comsat=0 quota=0 warning=0
  file=/var/mail/user3 format=unix
  message_prefix=From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}\n
  message_suffix=\n
  maildir_use_size_file=no
  locking by lockfile fcntl
lock name: /var/mail/user3.lock
hitch name: /var/mail/user3.lock.ws2.gedalya.net.5fac6ac2.0003fcb6
lock file created
mailbox /var/mail/user3 is locked
writing to file /var/mail/user3
writing data block fd=7 size=52 timeout=0
cannot use sendfile for body: spoolfile not wireformat
writing data block fd=7 size=410 timeout=0
writing data block fd=7 size=1 timeout=0
appendfile yields 0 with errno=0 more_errno=0
search_tidyup called
journalling user3@???
mail_spool transport returned OK for user3@???
post-process user3@??? (0)
user3@??? delivered
user2@???: children all complete
LOG: MAIN
  => user3 <user2@???> R=local_user T=mail_spool
--------> user3@??? <--------
 locking /var/spool/exim4/db/retry.lockfile
 locked  /var/spool/exim4/db/retry.lockfile
 EXIM_DBOPEN: file </var/spool/exim4/db/retry> dir </var/spool/exim4/db> flags=O_RDONLY
 returned from EXIM_DBOPEN: 0x555c3423b1e0
 opened hints database /var/spool/exim4/db/retry: flags=O_RDONLY
 dbfn_read: key=T:user3@???
no retry record exists
 EXIM_DBCLOSE(0x555c3423b1e0)
 closed hints database and lockfile
search_tidyup called
local-accept-delivery forking for delivery-local
local-accept-delivery forked for delivery-local: 261303
postfork: delivery-local
changed uid/gid: local delivery to user3 <user3@???> transport=mail_spool
  uid=1006 gid=8 pid=261303
  auxiliary group list: <none>
  home=/home/user3 current=/home/user3
set_process_info: 261303 delivering 1kcywp-0015yM-GC to user3 using mail_spool
T: appendfile for user3@???
appendfile transport entered
appendfile: mode=660 notify_comsat=0 quota=0 warning=0
  file=/var/mail/user3 format=unix
  message_prefix=From ${if def:return_path{$return_path}{MAILER-DAEMON}} ${tod_bsdinbox}\n
  message_suffix=\n
  maildir_use_size_file=no
  locking by lockfile fcntl
lock name: /var/mail/user3.lock
hitch name: /var/mail/user3.lock.ws2.gedalya.net.5fac6ac2.0003fcb7
lock file created
mailbox /var/mail/user3 is locked
writing to file /var/mail/user3
writing data block fd=7 size=52 timeout=0
cannot use sendfile for body: spoolfile not wireformat
writing data block fd=7 size=410 timeout=0
writing data block fd=7 size=1 timeout=0
appendfile yields 0 with errno=0 more_errno=0
search_tidyup called
journalling user3@???/mail_spool
mail_spool transport returned OK for user3@???
post-process user3@??? (0)
user3@??? delivered
user3@???: children all complete
LOG: MAIN
  => user3 <user3@???> R=local_user T=mail_spool
>>>>>>>>>>>>>>>> deliveries are done >>>>>>>>>>>>>>>>

changed uid/gid: post-delivery tidying
  uid=101 gid=104 pid=261298
  auxiliary group list: <none>
set_process_info: 261298 tidying up after delivering 1kcywp-0015yM-GC
Processing retry items
Succeeded addresses:
 user3@???: no retry items
 user3@???: no retry items
 user3@???: no retry items
 user2@???: no retry items
 user2@???: no retry items
 user2@???: no retry items
 user2@???: no retry items
 user2@???: no retry items
 user2@???: no retry items
 user3@???: no retry items
 user3@???: no retry items
Failed addresses:
Deferred addresses:
end of retry processing
DSN: processing router : local_user
DSN: processing successful delivery address: user3@???
DSN: Sender_address: user1@???
DSN: orcpt: NULL  flags: 0x0
DSN: envid: NULL  ret: 0
DSN: Final recipient: user3@???
DSN: Remote SMTP server supports DSN: 0
DSN: not sending DSN success message
DSN: processing router : local_user
DSN: processing successful delivery address: user3@???
DSN: Sender_address: user1@???
DSN: orcpt: NULL  flags: 0x0
DSN: envid: NULL  ret: 0
DSN: Final recipient: user3@???
DSN: Remote SMTP server supports DSN: 0
DSN: not sending DSN success message
DSN: processing router : local_user
DSN: processing successful delivery address: user2@???
DSN: Sender_address: user1@???
DSN: orcpt: NULL  flags: 0x0
DSN: envid: NULL  ret: 0
DSN: Final recipient: user2@???
DSN: Remote SMTP server supports DSN: 0
DSN: not sending DSN success message
DSN: processing router : bcc
DSN: processing successful delivery address: user2@???
DSN: Sender_address: user1@???
DSN: orcpt: NULL  flags: 0x0
DSN: envid: NULL  ret: 0
DSN: Final recipient: user2@???
DSN: Remote SMTP server supports DSN: 0
DSN: not sending DSN success message
DSN: processing router : bcc
DSN: processing successful delivery address: user3@???
DSN: Sender_address: user1@???
DSN: orcpt: NULL  flags: 0x0
DSN: envid: NULL  ret: 0
DSN: Final recipient: user3@???
DSN: Remote SMTP server supports DSN: 0
DSN: not sending DSN success message
LOG: MAIN
  Completed
end delivery of 1kcywp-0015yM-GC
search_tidyup called
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=261298 (local-accept-delivery) terminating with rc=0 >>>>>>>>>>>>>>>>