Philip Hazel wrote:
On Wed, 22 Jun 2005, Steve Sargent wrote:


The exim running on our imap server has this retry rule:-


imap.qmul.ac.uk        *           F,1h,5m; F,2h,15m; G,16h,2h,1.5; F,4d,8h

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


Messages addressed to [EMAIL PROTECTED] get stuck in the queue because
the user is over quota, and remain in the queue for 10 days even though the
retry rule says 4 days. Does anyone know why?


1. What does
  exim -brw [EMAIL PROTECTED]
say?


bash$ /usr/local/exim/bin-imap/exim -brt [EMAIL PROTECTED]
Retry rule: imap.qmul.ac.uk  *  F,1h,5m; F,2h,15m; G,16h,2h,1.5; F,4d,8h;




2. What does

  exinext [EMAIL PROTECTED]
say?

bash$ exinext [EMAIL PROTECTED]
in alias router
in cyrus router
No remote hosts found for [EMAIL PROTECTED]
Route: [EMAIL PROTECTED] error 0: SMTP error from remote mailer after RCPT TO:<[EMAIL PROTECTED]>: host localhost.qmul.ac.uk [127.0.0.1]: 452 4.2.2 Over quota
  first failed: 20-Jun-2005 16:04:20
  last tried:   23-Jun-2005 13:01:24
  next try at:  23-Jun-2005 21:01:24



3. What is the debug output from

  exim -d -M <an id for a stuck message>
?


Exim version 4.34 uid=500 gid=500 pid=19077 D=fbb95cfd
Probably ndbm
Support for: iconv()
Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz
Authenticators:
Routers: accept dnslookup ipliteral manualroute queryprogram redirect
Transports: appendfile/maildir autoreply lmtp pipe smtp
Fixed never_users: 0
changed uid/gid: forcing real = effective
  uid=0 gid=500 pid=19077
  auxiliary group list: <none>
configuration file is /usr/local/exim/imap.conf
log selectors = 00000ffc 00013700
trusted user
admin user
skipping ACL configuration - not needed
set_process_info: 19077 delivering specified messages
set_process_info: 19077 delivering 1DkNhR-0000N1-R7
reading spool file 1DkNhR-0000N1-R7-H
user=exim uid=500 gid=500 [EMAIL PROTECTED]
sender_fullhost = mail1.qmul.ac.uk [138.37.6.7]
sender_rcvhost = mail1.qmul.ac.uk ([138.37.6.7])
sender_local=0 ident=unset
Non-recipients:
Empty Tree
---- End of tree ----
recipients_count=1
body_linecount=175 message_linecount=34
Delivery address list:
  [EMAIL PROTECTED]
locking /var/spool/exim-imap/db/retry.lockfile
locked /var/spool/exim-imap/db/retry.lockfile
opened hints database /var/spool/exim-imap/db/retry: flags=0
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Considering: [EMAIL PROTECTED]
unique = [EMAIL PROTECTED]
dbfn_read: key=R:imap.qmul.ac.uk
dbfn_read: key=R:[EMAIL PROTECTED]
no domain retry record
[EMAIL PROTECTED]: queued for routing
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
routing [EMAIL PROTECTED]
--------> smart_route router <--------
local_part=hcw295 domain=imap.qmul.ac.uk
checking domains
imap.qmul.ac.uk in "@ : imap.qmw.ac.uk : imap.qmul.ac.uk"? yes (matched "@")
imap.qmul.ac.uk in "! +local_domains"? no (matched "! +local_domains")
smart_route router skipped: domains mismatch
--------> system_aliases router <--------
local_part=hcw295 domain=imap.qmul.ac.uk
in alias router
calling system_aliases router
rda_interpret (string): ${lookup{$local_part}lsearch{/etc/aliases}}
search_open: lsearch "/etc/aliases"
search_find: file="/etc/aliases"
  key="hcw295" partial=-1 affix=NULL starflags=0
LRU list:
  :/etc/aliases
  End
internal_search_find: file="/etc/aliases"
  type=lsearch key="hcw295"
file lookup required for hcw295
  in /etc/aliases
lookup failed
expanded:
file is not a filter file
parse_forward_list:
system_aliases router declined for [EMAIL PROTECTED]
--------> local_user_cyrus router <--------
local_part=hcw295 domain=imap.qmul.ac.uk
in cyrus router
calling local_user_cyrus router
local_user_cyrus router called for [EMAIL PROTECTED]
  domain = imap.qmul.ac.uk
set transport lmtp_delivery_over_ip
queued for lmtp_delivery_over_ip transport: local_part = hcw295
domain = imap.qmul.ac.uk
  errors_to=NULL
  domain_data=NULL localpart_data=NULL
routed by local_user_cyrus router
  envelope to: [EMAIL PROTECTED]
  transport: lmtp_delivery_over_ip
added retry item for R:[EMAIL PROTECTED]: errno=-1 0 flags=1
added retry item for R:imap.qmul.ac.uk: errno=-1 0 flags=1
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
After routing:
  Local deliveries:
  Remote deliveries:
    [EMAIL PROTECTED]
  Failed addresses:
  Deferred addresses:
search_tidyup called
>>>>>>>>>>>>>>>> Remote deliveries >>>>>>>>>>>>>>>>
--------> [EMAIL PROTECTED] <--------
search_tidyup called
changed uid/gid: remote delivery to [EMAIL PROTECTED] with transport=lmtp_delivery_over_ip
  uid=500 gid=500 pid=19078
  auxiliary group list: <none>
set_process_info: 19078 delivering 1DkNhR-0000N1-R7 using lmtp_delivery_over_ip
*** lmtp over tcp/ip: local part hcw295
lmtp_delivery_over_ip transport entered
  [EMAIL PROTECTED]
using the transport's hosts: localhost
getting address for localhost
DNS lookup of localhost (A) succeeded
fully qualified name = localhost.qmul.ac.uk
localhost.qmul.ac.uk 127.0.0.1 mx=-1 sort=-195
checking status of localhost.qmul.ac.uk
locking /var/spool/exim-imap/db/retry.lockfile
locked /var/spool/exim-imap/db/retry.lockfile
opened hints database /var/spool/exim-imap/db/retry: flags=0
dbfn_read: key=T:localhost.qmul.ac.uk:127.0.0.1:24
dbfn_read: key=T:localhost.qmul.ac.uk:127.0.0.1:24:1DkNhR-0000N1-R7
no host retry record
no message retry record
localhost.qmul.ac.uk [127.0.0.1]:24 status = usable
127.0.0.1 in serialize_hosts? no (option unset)
delivering 1DkNhR-0000N1-R7 to localhost.qmul.ac.uk [127.0.0.1] ([EMAIL PROTECTED]) set_process_info: 19078 delivering 1DkNhR-0000N1-R7 to localhost.qmul.ac.uk [127.0.0.1] ([EMAIL PROTECTED]) set_process_info: 19077 delivering 1DkNhR-0000N1-R7: waiting for a remote delivery subprocess to finish
selecting on subprocess pipes
Connecting to localhost.qmul.ac.uk [127.0.0.1]:24 ... connected
read response data: size=38
  SMTP<< 220 upsilon LMTP Cyrus v2.1.11 ready
127.0.0.1 in hosts_avoid_esmtp? no (option unset)
  SMTP>> LHLO imap.qmul.ac.uk
read response data: size=114
  SMTP<< 250-upsilon
         250-8BITMIME
         250-ENHANCEDSTATUSCODES
         250-PIPELINING
         250-SIZE
         250-AUTH EXTERNAL
         250 IGNOREQUOTA
using PIPELINING
127.0.0.1 in hosts_require_auth? no (option unset)
127.0.0.1 in hosts_try_auth? no (option unset)
  SMTP>> MAIL FROM:<[EMAIL PROTECTED]> SIZE=7554
  SMTP>> RCPT TO:<[EMAIL PROTECTED]>
  SMTP>> DATA
read response data: size=61
  SMTP<< 250 2.1.0 ok
  SMTP<< 452 4.2.2 Over quota
added retry item for R:[EMAIL PROTECTED]: errno=0 65 flags=0
  SMTP<< 503 5.5.1 No recipients
SMTP error from remote mailer after pipelined DATA: host localhost.qmul.ac.uk [127.0.0.1]: 503 5.5.1 No recipients error for DATA ignored: pipelining is in use and there were no good recipients
ok=1 send_quit=1 send_rset=1 continue_more=0 yield=0 first_address=0
  SMTP>> QUIT
set_process_info: 19078 delivering 1DkNhR-0000N1-R7: just tried localhost.qmul.ac.uk [127.0.0.1] for [EMAIL PROTECTED]: result OK
all IP addresses skipped or deferred at least one address
locking /var/spool/exim-imap/db/wait-lmtp_delivery_over_ip.lockfile
locked /var/spool/exim-imap/db/wait-lmtp_delivery_over_ip.lockfile
opened hints database /var/spool/exim-imap/db/wait-lmtp_delivery_over_ip: flags=2
Leaving lmtp_delivery_over_ip transport
set_process_info: 19078 delivering 1DkNhR-0000N1-R7 (just run lmtp_delivery_over_ip for [EMAIL PROTECTED] in subprocess)
search_tidyup called
reading pipe for subprocess 19078 (not ended)
read() yielded 235
reading retry information for R:[EMAIL PROTECTED] from subprocess
  existing delete item dropped
  added retry item
reading retry information for R:imap.qmul.ac.uk from subprocess
  existing delete item dropped
  added delete item
reading retry information for R:[EMAIL PROTECTED] from subprocess
  delete item not added: non-delete item exists
selecting on subprocess pipes
reading pipe for subprocess 19078 (not ended)
read() yielded 147
Z0 item read
remote delivery process 19078 ended
set_process_info: 19077 delivering 1DkNhR-0000N1-R7
post-process [EMAIL PROTECTED] (1)
LOG: MAIN
== [EMAIL PROTECTED] R=local_user_cyrus T=lmtp_delivery_over_ip defer (0): SMTP error from remote mailer after RCPT TO:<[EMAIL PROTECTED]>: host localhost.qmul.ac.uk [127.0.0.1]: 452 4.2.2 Over quota
>>>>>>>>>>>>>>>> deliveries are done >>>>>>>>>>>>>>>>
changed uid/gid: post-delivery tidying
  uid=500 gid=500 pid=19077
  auxiliary group list: <none>
set_process_info: 19077 tidying up after delivering 1DkNhR-0000N1-R7
Processing retry items
Succeeded addresses:
Failed addresses:
Deferred addresses:
[EMAIL PROTECTED]
locking /var/spool/exim-imap/db/retry.lockfile
locked /var/spool/exim-imap/db/retry.lockfile
opened hints database /var/spool/exim-imap/db/retry: flags=2
deleted retry information for R:imap.qmul.ac.uk
address match: [EMAIL PROTECTED] pattern=imap.qmul.ac.uk
imap.qmul.ac.uk in "imap.qmul.ac.uk"? yes (matched "imap.qmul.ac.uk")
[EMAIL PROTECTED] in "imap.qmul.ac.uk"? yes (matched "imap.qmul.ac.uk")
retry for R:[EMAIL PROTECTED] = imap.qmul.ac.uk
dbfn_read: key=R:[EMAIL PROTECTED]
Writing retry data for R:[EMAIL PROTECTED]
  first failed=1119279860 last try=1119535065 next try=1119563865 expired=0
error 0 65: SMTP error from remote mailer after RCPT TO:<[EMAIL PROTECTED]>: host localhost.qmul.ac.uk [127.0.0.1]: 452 4.2.2 Over quota
dbfn_write: key=R:[EMAIL PROTECTED]
end of retry processing
time on queue = 2d23h1m12s
warning counts: required 2 done 2
delivery deferred: update_spool=0 header_rewritten=0
end delivery of 1DkNhR-0000N1-R7
search_tidyup called
search_tidyup called
>>>>>>>>>>>>>>>> Exim pid=19077 terminating with rc=0 >>>>>>>>>>>>>>>>



The config file is attached.









One possible scenario is that messages pile up for this user; she clears out her mailbox and one message is delivered, filling it up again. This sequence continues. The point is that once one message is successfully delivered, the retry clock for the address will be reset.

HOWEVER: There is a rule that no message should stay on the queue for longer than the longest retry time for any of its addresses. So what I wrote above should be superseded by that rule. The debug output might give a clue as to what is happening.


--
Steve Sargent, Vox +44 020 7882 3220, Fax +44 020 8980 2001
QMUL Computing Services,  Mile End Road,  London E1 4NS, UK
Email   : [EMAIL PROTECTED]
WWW page: http://www.qmul.ac.uk/~cgaa160/index.html

                                PIPER       _|_
                                PA28R  ____/___\___
                                ___________[=o=]___________
                                ARROW    e/  o  \e
# exim configuration file for cyrus/imap delivery service
# 1.0.0 10  Jun 2004 (sls) - preliminary for version 4 of exim
# 1.0.2 18  Jun 2004 (sls) - allow users to submit mail via this host 
temporarily.
# 1.0.3 15  Jul 2004 (sls) - change relay_hosts to have 127.0.0.1 instead of 
localhost and fix a missing ':'.
# 1.0.4 16  Jul 2004 (sls) - change freeze_tell to [EMAIL PROTECTED] and turn 
ident calls off.
# 1.0.5 16  Jul 2004 (sls) - change errors_copy to [EMAIL PROTECTED]
# 1.0.6 16  Jul 2004 (sls) - move the log and spool files into a sub-directory 
called imap.
# 1.0.7 16  Jul 2004 (sls) - remove 127.0.0.1 from  local_interfaces (should be 
in imap.local or standard.local).
# 1.0.8 19  Jul 2004 (sls) - change location of the spool and log directories.
# 1.0.9 28  Jul 2004 (sls) - add 127.0.0.1 to qm_hosts.
# 1.0.10 29 Jul 2004 (sls) - add interface = INTERFACE to the remote_smtp 
transport.
# 1.0.11 02 Aug 2004 (sls) - remove 138.37.0.0/16 from relay_hosts to stop imap 
from being used as a submission seervice.
#                          - change the message in the rcpt ACL to relay not 
permitted
# 1.0.12 06 Oct 2004 (mdte)- use: .include imap.conf directive.
#                          - add: bounce_return_body false
# 1.0.13 07 Dec 2004 (sls) - add mail2-test to the list of allowed sending 
hosts.

# include local configuration.
.include /usr/local/exim/imap.local

SPOOLDIR = /var/spool/exim-imap
LOGDIR = /var/log/exim-imap


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


acl_smtp_connect = check_connection
acl_smtp_rcpt = check_recipient
acl_smtp_data = check_message

domainlist local_domains = @ : \
    imap.qmw.ac.uk : \
    imap.qmul.ac.uk

hostlist relay_hosts = 127.0.0.1 : \
    138.37.6.7 : 138.37.6.6 : 138.37.6.9 : 138.37.6.37 : 138.37.6.5 : \
    138.37.6.15 : 138.37.8.140 : 138.37.8.139 : 138.37.6.16

# a list of servers allowed to send to the imap server
# ---------------------------------------------------
# 138.37.6.7    - mail1.qmul.ac.uk
# 138.37.6.6    - mail2.qmul.ac.uk
# 138.37.6.9    - delta.qmul.ac.uk
# 138.37.6.37   - theta.qmw.ac.uk
# 138.37.6.5    - chi.qmul.ac.uk
# 138.37.6.15   - mail1-test.qmul.ac.uk
# 138.37.6.16   - mail2-test.qmul.ac.uk
# 138.37.8.140  - mdte.css.qmul.ac.uk
# 138.37.8.139  - sls.css.qmw.ac.uk



hostlist qm_hosts = 138.37.0.0/16 : 127.0.0.1

log_selector =  \
              +received_sender \
              +received_recipients \
              +smtp_confirmation \
              +sender_on_delivery



######################################################################
#                    MAIN CONFIGURATION SETTINGS                     #
######################################################################



primary_hostname = PRIMARY_HOSTNAME

allow_domain_literals = false

never_users = root

spool_directory = SPOOLDIR
log_file_path = LOGDIR/%s
pid_file_path = LOGDIR/exim.pid


host_lookup = 0.0.0.0/0

# allow cyrus to set the sender for sieve support
trusted_users = cyrus


# SMTP settings
# listen only on service IP number
local_interfaces = INTERFACE



# give the local postmaster a copy of any errors
errors_copy = "[EMAIL PROTECTED] [EMAIL PROTECTED]"

freeze_tell = [EMAIL PROTECTED]
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d

# do not return body (as it may contain null chars and get stuck).
bounce_return_body = false

# disable ident calls.
rfc1413_query_timeout = 0s




######################################################################
#                   ACL CONFIGURATION                                #
######################################################################


begin acl

# ACL that is used after the initial smtp connection
check_connection:
  drop    hosts = !+qm_hosts
          message = Private internal use only.
  accept  hosts = +relay_hosts
  drop    message = Please use smtp.qmul.ac.uk for message submission.


# ACL that is used after the RCPT command
check_recipient:
  accept  hosts = :
  accept  domains = +local_domains
  accept  hosts = +relay_hosts
  deny    message = relay not permitted


# ACL that is used after the DATA command
check_message:
  accept




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




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



######################################################################
#                      ROUTERS CONFIGURATION                         #
#            Specifies how remote addresses are handled              #
######################################################################

begin routers


# just send everything to the main relays
smart_route:
  driver = manualroute
  domains = ! +local_domains
  route_list = * mailrelay.qmul.ac.uk bydns
  transport = remote_smtp
  no_more



system_aliases:
  driver = redirect
  allow_defer
  allow_fail
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  debug_print = "in alias router"
  file_transport = address_file
  pipe_transport = address_pipe
  retry_use_local_part
# user = exim


# Director for sending local mail via the cyrus transport
local_user_cyrus:
  driver = accept
  debug_print = "in cyrus router"
  retry_use_local_part
  transport = lmtp_delivery_over_ip






######################################################################
#                      TRANSPORTS CONFIGURATION                      #
######################################################################

# This transport is used for delivering messages over SMTP connections.
begin transports

remote_smtp:
  driver = smtp
  interface = INTERFACE


# local delivery to Cyrus using LMTP over TCP/IP
lmtp_delivery_over_ip:
  driver = smtp
  allow_localhost
  debug_print = "*** lmtp over tcp/ip: local part $local_part"
  hosts = localhost
  port = "lmtp"
  protocol = LMTP


address_pipe:
  driver = pipe
  return_output

address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

address_reply:
  driver = autoreply





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

# Domain               Error       Retries
# ------               -----       -------


begin retry

imap.qmul.ac.uk        *           F,1h,5m; F,2h,15m; G,16h,2h,1.5; F,4d,8h

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


# End of Exim 4 configuration
-- 
## List details at http://www.exim.org/mailman/listinfo/exim-users 
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://www.exim.org/eximwiki/

Reply via email to