[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ZMailer] Dovecot LDA as local delivery agent



Hi!

Some time ago, we are setup Dovecot LDA as local delivery agent for Zmailer.

Main features of Dovecot LDA (http://wiki.dovecot.org/LDA):
-- Mailbox indexing during mail delivery, providing faster mailbox access later
-- Quota enforcing by a plugin
-- Sieve language support by a plugin
---- Mail filtering
---- Mail forwarding
---- Vacation auto-reply

Perhaps anyone would be interested:

1. Add to zmailer/sm.conf
---
# dovecot LDA
dovecot SPfne  /usr/local/libexec/dovecot/deliver  deliver -e -n -d $u
---

2. Change zmailer/scheduler.conf like this:

Go local/file* and local/pipe* thru "mailbox" delivery agent:
---
local/file*
local/pipe*
        ...
        # zmailer local delivery transport agent
        command="mailbox -8HS -l ${LOGDIR}/mailbox"
---

and after go all other local/* thru dovecot LDA:
---
local/*
        ...
        # DOVECOT as the local delivery agent:
        command="sm -8c $channel dovecot"
---

As /Matti Aarnio wrote about procmail:
>
> Then all deliveries to local users will go thru procmail, AND
> if users want to run pipes / store to files thru their  .forward
> files, they can do that too.  (That is why there are tag-matchers
> for  "local/file*" and "local/pipe*" before "local/*" in that
> scheduler.conf file; those are for cases which must not run thru
> procmail.)


But little problem: If you (as we) will start use "-e" deliver param:
---
-e: If mail gets rejected, write the rejection reason to stderr and exit with EX_NOPERM.
---
Zmailer start complain on reject case: "(this is abnormal, investigate!)".

Fix Zmailer: in zmailer/transports/libta/diagnostic.c:
---
-      case EX_NOPERM:
       case EX_PROTOCOL:
       case EX_USAGE:
               strcat(message,
                      " (this is abnormal, investigate!)");
               s += strlen(s);
               /* fall through */
+      case EX_NOPERM:
       case EX_NOUSER:
       case EX_NOHOST:
       case EX_UNAVAILABLE:
---

Or fix Dovecot: in dovecot-1.2.6/src/deliver/deliver.c:
---
                if (stderr_rejection)
-                       return EX_NOPERM;
+                       return EX_UNAVAILABLE;
---


=kostik

--
To unsubscribe from this list: send the line "unsubscribe zmailer" in
the body of a message to majordomo@nic.funet.fi