From: Holger Wesser on
Hello,

I set up an email server based on Debian Etch. As MTA I use Postfix.
Furthermore I use Courier and sqwebmail; the users are stored in a
Mysql-Database. Everything works fine except the mailfiltering.

My main.cf:

<main.cf>
local_transport = maildrop
maildrop_destination_recipient_limit = 1
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
unknown_local_recipient_reject_code = 550

mynetworks = 127.0.0.0/8
smtpd_banner = $myhostname ESMTP $mail_name
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5

myhostname = mail.example.com
mydestination = mail.example.com, localhost, localhost.localdomain

virtual_alias_domains =
virtual_alias_maps =
proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf,
mysql:/etc/postfix/mysql-virtual_email2email.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /home/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = reject_unknown_recipient_domain,
permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination,
check_policy_service inet:127.0.0.1:60000
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key
transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps =
proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "The user you are trying to reach is
over quota."
virtual_overquota_bounce = yes
proxy_read_maps = $local_recipient_maps $mydestination
$virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps
$virtual_mailbox_domains $relay_recipient_maps $relay_domains
$canonical_maps $sender_canonical_maps $recipient_canonical_maps
$relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings
smtpd_helo_required = yes

</main.cf>

My master.cf:

<master.cf>
smtp inet n - - - - smtpd
pickup fifo n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr fifo n - n 300 1 qmgr
tlsmgr unix - - - 1000? 1 tlsmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - - - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - - - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - - - - showq
error unix - - - - - error
discard unix - - - - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil
scache unix - - - - 1 scache
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail
($recipient)
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender
$recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes

127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o
receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_bind_address=127.0.0.1
</master.cf>



In /etc/courier I created a file "maildirfilterconfig":

MAILDIRFILTER=./.mailfilter
MAILDIR=.

When a user sets up an autoresponder via sqwebmail, the file
".mailfilter" is created in his Maildir-Folder. But unfortunately, the
filter rules don't work and are ignored.

On the debian's website it is written that I have to use the
"courier-maildrop" package when using sqwebmail.

I just don't know, how to get the filtering work. Can you help me?

Greetings,
Holger
From: Holger Wesser on
Okay, I got it solved so far. I had to create the maildroprc-file. Also
I forgot to set the transport method to maildrop in the virtual
transport file (MySQL-DB).

But there is still a problem. If the user sets a forwarding rule in
Sqwebmail, everything works fine. If the user creates an autoresponder,
I get the following message in /var/log/mail.info:

May 14 02:26:17 hermes postfix/pipe[13157]: 447D51EC514:
to=<foo(a)example.com>, relay=maildrop, delay=3361,
delays=3361/0.02/0/0.08, dsn=4.3.0, status=deferred (temporary failure.
Command output: maildrop: authlib: groupid=5000)

Any ideas, what's going wrong here?

Thanks a lot.
Holger

> Hello,
>
> I set up an email server based on Debian Etch. As MTA I use Postfix.
> Furthermore I use Courier and sqwebmail; the users are stored in a
> Mysql-Database. Everything works fine except the mailfiltering.
>
> My main.cf:
>
> <main.cf>
> local_transport = maildrop
> maildrop_destination_recipient_limit = 1
> command_directory = /usr/sbin
> daemon_directory = /usr/lib/postfix
> unknown_local_recipient_reject_code = 550
>
> mynetworks = 127.0.0.0/8
> smtpd_banner = $myhostname ESMTP $mail_name
> debugger_command =
> PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
> xxgdb $daemon_directory/$process_name $process_id & sleep 5
>
> myhostname = mail.example.com
> mydestination = mail.example.com, localhost, localhost.localdomain
>
> virtual_alias_domains =
> virtual_alias_maps =
> proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf,
> mysql:/etc/postfix/mysql-virtual_email2email.cf
> virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
> virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
> virtual_mailbox_base = /home/vmail
> virtual_uid_maps = static:5000
> virtual_gid_maps = static:5000
> smtpd_sasl_auth_enable = yes
> broken_sasl_auth_clients = yes
> smtpd_recipient_restrictions = reject_unknown_recipient_domain,
> permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination,
> check_policy_service inet:127.0.0.1:60000
> smtpd_use_tls = yes
> smtpd_tls_cert_file = /etc/postfix/smtpd.cert
> smtpd_tls_key_file = /etc/postfix/smtpd.key
> transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
> virtual_create_maildirsize = yes
> virtual_mailbox_extended = yes
> virtual_mailbox_limit_maps =
> proxy:mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
> virtual_mailbox_limit_override = yes
> virtual_maildir_limit_message = "The user you are trying to reach is
> over quota."
> virtual_overquota_bounce = yes
> proxy_read_maps = $local_recipient_maps $mydestination
> $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps
> $virtual_mailbox_domains $relay_recipient_maps $relay_domains
> $canonical_maps $sender_canonical_maps $recipient_canonical_maps
> $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
> content_filter = amavis:[127.0.0.1]:10024
> receive_override_options = no_address_mappings
> smtpd_helo_required = yes
>
> </main.cf>
>
> My master.cf:
>
> <master.cf>
> smtp inet n - - - - smtpd
> pickup fifo n - - 60 1 pickup
> cleanup unix n - - - 0 cleanup
> qmgr fifo n - n 300 1 qmgr
> tlsmgr unix - - - 1000? 1 tlsmgr
> rewrite unix - - - - - trivial-rewrite
> bounce unix - - - - 0 bounce
> defer unix - - - - 0 bounce
> trace unix - - - - 0 bounce
> verify unix - - - - 1 verify
> flush unix n - - 1000? 0 flush
> proxymap unix - - n - - proxymap
> smtp unix - - - - - smtp
> # When relaying mail as backup MX, disable fallback_relay to avoid MX loops
> relay unix - - - - - smtp
> -o fallback_relay=
> # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
> showq unix n - - - - showq
> error unix - - - - - error
> discard unix - - - - - discard
> local unix - n n - - local
> virtual unix - n n - - virtual
> lmtp unix - - - - - lmtp
> anvil unix - - - - 1 anvil
> scache unix - - - - 1 scache
> maildrop unix - n n - - pipe
> flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
> uucp unix - n n - - pipe
> flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail
> ($recipient)
> ifmail unix - n n - - pipe
> flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
> bsmtp unix - n n - - pipe
> flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender
> $recipient
> scalemail-backend unix - n n - 2 pipe
> flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
> ${nexthop} ${user} ${extension}
> mailman unix - n n - - pipe
> flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
> ${nexthop} ${user}
> amavis unix - - - - 2 smtp
> -o smtp_data_done_timeout=1200
> -o smtp_send_xforward_command=yes
>
> 127.0.0.1:10025 inet n - - - - smtpd
> -o content_filter=
> -o local_recipient_maps=
> -o relay_recipient_maps=
> -o smtpd_restriction_classes=
> -o smtpd_client_restrictions=
> -o smtpd_helo_restrictions=
> -o smtpd_sender_restrictions=
> -o smtpd_recipient_restrictions=permit_mynetworks,reject
> -o mynetworks=127.0.0.0/8
> -o strict_rfc821_envelopes=yes
> -o
> receive_override_options=no_unknown_recipient_checks,no_header_body_checks
> -o smtpd_bind_address=127.0.0.1
> </master.cf>
>
>
>
> In /etc/courier I created a file "maildirfilterconfig":
>
> MAILDIRFILTER=./.mailfilter
> MAILDIR=.
>
> When a user sets up an autoresponder via sqwebmail, the file
> ".mailfilter" is created in his Maildir-Folder. But unfortunately, the
> filter rules don't work and are ignored.
>
> On the debian's website it is written that I have to use the
> "courier-maildrop" package when using sqwebmail.
>
> I just don't know, how to get the filtering work. Can you help me?
>
> Greetings,
> Holger