1

Have got following trouble: when user is over quota there is a error message in exim log:

$2012-11-06 14:22:38 1TVfxZ-00086u-U1 == username@domain R=localuser T=dovecot_delivery defer (0): Child process of dovecot_delivery transport returned 75 (could mean temporary error) from command: /usr/libexec/dovecot/dovecot-lda

ALso, there is an error message in maillog:

Nov  6 13:33:32 mx2 dovecot: lda(username@domain): Error: sieve: msgid=<5098D961.20608@gmail.com>: failed to store into mailbox 'INBOX': Quota exceeded (mailbox for user is full)
Nov  6 13:33:32 mx2 dovecot: lda(username@domain): Error: sieve: script /etc/dovecot/sieve/default.sieve failed with unsuccessful implicit keep

Exim transport:

dovecot_delivery:
   driver = pipe
   command = /usr/libexec/dovecot/dovecot-lda -d $local_part@$domain -f $sender_address
   message_prefix =
   message_suffix =
   delivery_date_add
   envelope_to_add
   log_output
   user = vmail
   temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

So, sieve can't store email because of quota, but why it doesn't show correct error in exim log? How it can be fixed?

Without sieve plugin:

Nov  6 15:41:00 mx2 dovecot: lda(username@domain): msgid=<5098F744.7070200@gmail.com>: save failed to INBOX: Quota exceeded (mailbox for user is full)

Thanks in advance!

Hikaru
  • 73
  • 11

1 Answers1

1

In its capacity as MTA, exim has received the email, and handed it off to dovecot (in its capacity as MDA) for local processing and delivery. Dovecot, which knows about quotas, has an issue with the user being over quota, can't deliver the email, and logs to that effect. It also lets exim know that delivery has failed, so that exim can do the right thing, and exim logs that there's been an error, probably a temporary one, with delivery. Hopefully that email has either been held in queue or returned to sender.

You don't say what you're expecting to see in the logs, but I'm assuming that what you see above doesn't match your expectations. Problem is, those logs make perfect sense in the light of who's responsible for what, so you probably need to modify your expectations.

Edit: "Message still in queue and it will be delivered"? Then the logs are right. The sender shouldn't yet have been notified of delivery failure, since the MTA hasn't decided to wash its hands of this transaction yet. A well-behaved MTA will send a warning to the sender after a reasonable period - sendmail waits four hours by default - to say the recipient hasn't got it yet but that the MTA will keep trying. I don't know if your exim's done that, you might try asking the sender, or checking your mail logs.

(Quick glossary: MTA = Mail Transport Agent, eg exim or sendmail; MDA = Mail Delivery Agent, often procmail but here, apparently, dovecot's lda).

MadHatter
  • 79,770
  • 20
  • 184
  • 232
  • Exim should report that user over quota and send notification to sender, not log "temporary error". And, as I remember it worked fine for some time several updates before. – Hikaru Nov 06 '12 at 11:34
  • Better back out those updates, then. And since you haven't told us if the message is still in queue, or if it was returned to sender, what email the sender received, we can't say whether or not it did that. – MadHatter Nov 06 '12 at 11:38
  • Message still in queue and it will be delivered. – Hikaru Nov 06 '12 at 11:48
  • Ah forgot, it will send message only if it will bounce email. You're right - I need to modify me expectations. – Hikaru Nov 06 '12 at 12:00
  • Dovecot2 has special facility quota-warning and special option for dovecot-lda avoiding quota checking for overquota notifications. That's ensure that o/q notifications will be delivered anyway, even to the overquoted mailbox. – Kondybas Nov 10 '12 at 00:11