1

Topic: Existing Mail List bouncing after upgrade to 0.9.0

==== Required information ====
- iRedMail version:
- Store mail accounts in which backend (LDAP/MySQL/PGSQL):
- Linux/BSD distribution name and version:
- Related log if you're reporting an issue:
======== Required information ====
- iRedMail version:
- Store mail accounts in which backend (LDAP/MySQL/PGSQL):
- Linux/BSD distribution name and version:
- Related log if you're reporting an issue:
======== Required information ====
- iRedMail version: 0.9.0
- Store mail accounts in which backend (LDAP/MySQL/PGSQL): LDAP
- Linux/BSD distribution name and version: Debian Wheezy
- Related log if you're reporting an issue:
====

Hello,

after upgrading to 0.9.0 the existing mail lists are bouncing:

mail postfix/pipe: 065BE4001428: to=<maillist@example.org>, relay=dovecot, delay=0.09, delays=0.01/0.02/0/0.06, dsn=5.1.1, status=bounced (user unknown)

I've undone the improper Postfix settings in both main.cf and master.cf mentioned here http://www.iredmail.org/docs/upgrade.ir … 0.9.0.html and reviewed the settings but now i'd guess i need a little help ...

Thanks for help

----

Spider Email Archiver: On-Premises, lightweight email archiving software developed by iRedMail team. Supports Amazon S3 compatible storage and custom branding.

2

Re: Existing Mail List bouncing after upgrade to 0.9.0

Upgrade tutorial for iRedMail-0.9.0 does impact mailing list, and others didn't report similar issue in this forum or via email. I have no idea why it occurs on your server. Did you have any other changes?

3

Re: Existing Mail List bouncing after upgrade to 0.9.0

While upgrading I skipped the white/blacklists parts for iRedAPD since i wouldn't really need it - could that be the problem ? No other changes have been done.
The mail list bounces occours on each of my virtual domains. I check ladp-entry for users und groups refering to another mail list  posting, but everything seems to be allright. I don't see any other hint in my logs.
Deleting the list and setting it up again, doesn't help, although "turning it off and on again" does not work smile

4

Re: Existing Mail List bouncing after upgrade to 0.9.0

*) iRedAPD part doesn't impact mailing list.
*) Could you please show us output of below commands:

# cd /etc/postfix/ldap/
# for cf in $(ls *.cf); do echo $cf; postmap -q 'your_mail_list@domain.com' ldap:./$cf; done

5

Re: Existing Mail List bouncing after upgrade to 0.9.0

Output from command:

catchall_maps.cf
recipient_bcc_maps_domain.cf
recipient_bcc_maps_user.cf
relay_domains.cf
sender_bcc_maps_domain.cf
sender_bcc_maps_user.cf
sender_login_maps.cf
transport_maps_domain.cf
transport_maps_user.cf
virtual_alias_maps.cf
virtual_group_maps.cf
user1@.example.org,user2@.example.org,user3@.example.org,user4@.example.org,user5@.example.org,...
virtual_group_members_maps.cf
virtual_mailbox_domains.cf
virtual_mailbox_maps.cf

The list of users is in correct syntax and has been replaced.

Thank you for the always fast reply and help !

6

Re: Existing Mail List bouncing after upgrade to 0.9.0

jobu wrote:

virtual_group_maps.cf
user1@.example.org,user2@.example.org,user3@.example.org,user4@.example.org,user5@.example.org,...

As you can see here, Postfix correctly expands mail list account to list of its members.

jobu wrote:

mail postfix/pipe: 065BE4001428: to=<maillist@example.org>, relay=dovecot, delay=0.09, delays=0.01/0.02/0/0.06, dsn=5.1.1, status=bounced (user unknown)

This log means 'maillist@example.org' is considered as a normal mail user which has a mailbox. This is wrong.
Could you please show us content of file /etc/dovecot/dovecot-ldap.conf? Remove password before pasting.

7 (edited by jobu 2015-01-29 13:54:01)

Re: Existing Mail List bouncing after upgrade to 0.9.0

Perhaps i missed something on a previous update - your new update-scripts are pretty easy to handle btw. ...
the content /etc/dovecot/dovecot-ldap.conf:

hosts           = 127.0.0.1:389
ldap_version    = 3
auth_bind       = yes
dn              = cn=vmail,dc=example,dc=org
dnpass          = password
base            = o=domains,dc=example,dc=org
scope           = subtree
deref           = never

# Below two are required by command 'doveadm mailbox ...'
iterate_attrs   = mail=user
iterate_filter  = (&(objectClass=mailUser)(accountStatus=active)(enabledService=mail))

user_filter     = (&(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=%Ls%Lc)(|(mail=%u)(&(enabledService=shadowaddress)(shadowAddress=%u))))
user_attrs      = mail=user,homeDirectory=home,=mail=maildir:~/Maildir/,mailQuota=quota_rule=*:bytes=%$
pass_filter     = (&(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=%Ls%Lc)(|(mail=%u)(&(enabledService=shadowaddress)(shadowAddress=%u))))
pass_attrs      = mail=user,userPassword=password
default_pass_scheme = CRYPT

8

Re: Existing Mail List bouncing after upgrade to 0.9.0

Here the ldapsearch output for the domains group entry:

# maillist@example.org, Groups, example.org, domains,
  example.org
dn: mail=maillist@example.org,ou=Groups,domainName=example.org,o=domains,dc=example,dc=org
objectClass: mailList
accountStatus: active
mail: maillist@example.org
enabledService: mail
enabledService: deliver
cn: some name

9

Re: Existing Mail List bouncing after upgrade to 0.9.0

Could you please enable debug mode in Dovecot, send a testing email to this mailing list, then paste related log in /var/log/dovecot*.log? There're 3 log files used by Dovecot:

- dovecot.log
- dovecot-sieve.log (or sieve.log on old iRedMail release)
- dovecot-lmtp.log. only used when you use LMTP as LDA.

10 (edited by jobu 2015-01-29 16:58:04)

Re: Existing Mail List bouncing after upgrade to 0.9.0

Outgoing Testmail and Bouncemail:

# tail -f /var/log/sieve.log | grep sender

Jan 29 08:47:22 lda: Debug: auth input: sender@example.org home=/var/vmail/vmail1/example.org/a/d/m/sender-2011.06.29.11.45.39/ mail=maildir:~/Maildir/ quota_rule=*:bytes=5368709120
Jan 29 08:47:22 lda(sender@example.org): Debug: Effective uid=2000, gid=2000, home=/var/vmail/vmail1/example.org/a/d/m/sender-2011.06.29.11.45.39/
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota root: name=user backend=dict args=:proxy::quotadict
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota rule: root=user mailbox=* bytes=5368709120 messages=0
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota warning: bytes=4563402752 (85%) messages=0 reverse=no command=quota-warning 85 sender@example.org
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota warning: bytes=4831838208 (90%) messages=0 reverse=no command=quota-warning 90 sender@example.org
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota warning: bytes=5100273664 (95%) messages=0 reverse=no command=quota-warning 95 sender@example.org
Jan 29 08:47:22 lda(sender@example.org): Debug: dict quota: user=sender@example.org, uri=proxy::quotadict, noenforcing=0
Jan 29 08:47:22 lda(sender@example.org): Debug: Namespace : type=private, prefix=, sep=/, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/Maildir/
Jan 29 08:47:22 lda(sender@example.org): Debug: maildir++: root=/var/vmail/vmail1/example.org/a/d/m/sender-2011.06.29.11.45.39//Maildir, index=, control=, inbox=/var/vmail/vmail1/example.org/a/d/m/sender-2011.06.29.11.45.39//Maildir, alt=
Jan 29 08:47:22 lda(sender@example.org): Debug: Namespace : type=shared, prefix=Shared/%u/, sep=/, inbox=no, hidden=no, list=children, subscriptions=yes location=maildir:/%Lh/Maildir/:INDEX=/%Lh/Maildir/Shared/%u
Jan 29 08:47:22 lda(sender@example.org): Debug: shared: root=/var/run/dovecot, index=, control=, inbox=, alt=
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota root: name=user backend=dict args=:proxy::quotadict
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota rule: root=user mailbox=* bytes=1073741824 messages=0
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota warning: bytes=912680550 (85%) messages=0 reverse=no command=quota-warning 85 raw mail user
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota warning: bytes=966367641 (90%) messages=0 reverse=no command=quota-warning 90 raw mail user
Jan 29 08:47:22 lda(sender@example.org): Debug: Quota warning: bytes=1020054732 (95%) messages=0 reverse=no command=quota-warning 95 raw mail user
Jan 29 08:47:22 lda(sender@example.org): Debug: dict quota: user=raw mail user, uri=proxy::quotadict, noenforcing=0
Jan 29 08:47:22 lda(sender@example.org): Debug: none: root=, index=, control=, inbox=, alt=
Jan 29 08:47:22 lda(sender@example.org): Debug: Destination address: sender@example.org (source: user@hostname)
Jan 29 08:47:22 lda(sender@example.org): Debug: sieve: using the following location for user's Sieve script: /var/vmail/sieve/example.org/sender/dovecot.sieve
Jan 29 08:47:22 lda(sender@example.org): Debug: sieve: opening script /var/vmail/sieve/example.org/sender/dovecot.sieve
Jan 29 08:47:22 lda(sender@example.org): Debug: sieve: script binary /var/vmail/sieve/example.org/sender/dovecot.svbin successfully loaded
Jan 29 08:47:22 lda(sender@example.org): Debug: sieve: binary save: not saving binary /var/vmail/sieve/example.org/sender/dovecot.svbin, because it is already stored
Jan 29 08:47:22 lda(sender@example.org): Debug: sieve: executing script from /var/vmail/sieve/example.org/sender/dovecot.svbin
Jan 29 08:47:22 lda(sender@example.org): Info: sieve: msgid=<20150129074722.5ABA24001426@mail.example.org>: stored mail into mailbox 'INBOX'

Maillist - Receipiant side

# tail -f /var/log/dovecot.log | grep maillist

Jan 29 08:47:22 auth: Debug: master in: USER    1       maillist@example.org        service=lda
Jan 29 08:47:22 auth: Debug: ldap(maillist@example.org): user search: base=o=domains,dc=example,dc=org scope=subtree filter=(&(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=lda)(|(mail=maillist@example.org)(&(enabledService=shadowaddress)(shadowAddress=maillist@example.org)))) fields=mail,homeDirectory,mailQuota
Jan 29 08:47:22 auth: Info: ldap(maillist@example.org): unknown user

Nothing else has been logged.

11

Re: Existing Mail List bouncing after upgrade to 0.9.0

Did you add 'maillist@example.org' as member of itself?

12

Re: Existing Mail List bouncing after upgrade to 0.9.0

No, definetly not.
Got 10 mail lists on different domains before upgrading, all working as expected, after upgrade to 0.9.0 these problem occours, on newly added mail list, too.

13

Re: Existing Mail List bouncing after upgrade to 0.9.0

Could you please compare /etc/postfix/mysql/*.cf with our standard settings here:
https://bitbucket.org/zhb/iredmail/src/ … tfix/ldap/

Just the 'query_filter =' lines.

14

Re: Existing Mail List bouncing after upgrade to 0.9.0

Yep, going to check all /etc/postfix/*.cf. It will take a while ...

15

Re: Existing Mail List bouncing after upgrade to 0.9.0

jobu wrote:

Yep, going to check all /etc/postfix/*.cf. It will take a while ...

You could always download the Repo Folder that Zhang linked and run a folder/folder 'diff'?

16

Re: Existing Mail List bouncing after upgrade to 0.9.0

You could always download the Repo Folder that Zhang linked and run a folder/folder 'diff'?

Oh i tried that, but wget leads to sourcecode and a simple git clone did not work. your suggestion is welcome ...

17 (edited by jobu 2015-02-02 17:47:14)

Re: Existing Mail List bouncing after upgrade to 0.9.0

In the meanwhile i checked the syntax - i believe there is an error on the bitbucket side in virtual_mailbox_maps.cf with an "j" at the end of line 1:

server_host     = 127.0.0.1j

besides that everything is on my side as it should be:

for files-in-postfix-ldap in `ls`; do grep query_filter $files-in-postfix-ldap; grep query_filter /etc/postfix/ldap/$files-in-postfix-ldap; done

query_filter    = (&(objectClass=mailUser)(accountStatus=active)(|(mail=@%d)(shadowAddress=@%d)))
query_filter    = (&(objectClass=mailUser)(accountStatus=active)(|(mail=@%d)(shadowAddress=@%d)))
query_filter    = (&(objectClass=mailDomain)(|(domainName=%d)(domainAliasName=%d))(accountStatus=active)(enabledService=mail)(enabledService=recipientbcc))
query_filter    = (&(objectClass=mailDomain)(|(domainName=%d)(domainAliasName=%d))(accountStatus=active)(enabledService=mail)(enabledService=recipientbcc))
query_filter    = (&(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s)))(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=recipientbcc))
query_filter    = (&(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s)))(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=recipientbcc))
query_filter    = (&(objectClass=mailDomain)(|(domainName=%s)(&(enabledService=domainalias)(domainAliasName=%s)))(domainBackupMX=yes)(accountStatus=active)(enabledService=mail))
query_filter    = (&(objectClass=mailDomain)(|(domainName=%s)(&(enabledService=domainalias)(domainAliasName=%s)))(domainBackupMX=yes)(accountStatus=active)(enabledService=mail))
query_filter    = (&(objectClass=mailDomain)(|(domainName=%d)(domainAliasName=%d))(accountStatus=active)(enabledService=mail)(enabledService=senderbcc))
query_filter    = (&(objectClass=mailDomain)(|(domainName=%d)(domainAliasName=%d))(accountStatus=active)(enabledService=mail)(enabledService=senderbcc))
query_filter    = (&(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s)))(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=senderbcc))
query_filter    = (&(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s)))(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=senderbcc))
query_filter    = (&(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=smtp)(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s))))
query_filter    = (&(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=smtp)(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s))))
query_filter    = (&(objectClass=mailDomain)(accountStatus=active)(enabledService=mail)(|(domainName=%s)(domainAliasName=%s)))
query_filter    = (&(objectClass=mailDomain)(accountStatus=active)(enabledService=mail)(|(domainName=%s)(domainAliasName=%s)))
query_filter    = (&(objectClass=mailUser)(mail=%s)(accountStatus=active)(enabledService=mail))
query_filter    = (&(objectClass=mailUser)(mail=%s)(accountStatus=active)(enabledService=mail))
query_filter    = (&(|(mail=%s)(shadowAddress=%s))(accountStatus=active)(enabledService=mail)(enabledService=deliver)(|(objectClass=mailAlias)(&(objectClass=mailUser)(enabledService=forward))))
query_filter    = (&(|(mail=%s)(shadowAddress=%s))(accountStatus=active)(enabledService=mail)(enabledService=deliver)(|(objectClass=mailAlias)(&(objectClass=mailUser)(enabledService=forward))))
query_filter    = (&(accountStatus=active)(enabledService=mail)(enabledService=deliver)(|(&(|(memberOfGroup=%s)(shadowAddress=%s))(objectClass=mailUser))(&(memberOfGroup=%s)(!(shadowAddress=%s))(|(objectClass=mailExternalUser)(objectClass=mailList)(objectClass=mailAlias)))))
query_filter    = (&(accountStatus=active)(enabledService=mail)(enabledService=deliver)(|(&(|(memberOfGroup=%s)(shadowAddress=%s))(objectClass=mailUser))(&(memberOfGroup=%s)(!(shadowAddress=%s))(|(objectClass=mailExternalUser)(objectClass=mailList)(objectClass=mailAlias)))))
query_filter    = (&(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=deliver)(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s))))
query_filter    = (&(objectClass=mailUser)(accountStatus=active)(enabledService=mail)(enabledService=deliver)(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s))))
query_filter    = (&(objectClass=mailDomain)(|(domainName=%s)(&(enabledService=domainalias)(domainAliasName=%s)))(!(domainBackupMX=yes))(accountStatus=active)(enabledService=mail))
query_filter    = (&(objectClass=mailDomain)(|(domainName=%s)(&(enabledService=domainalias)(domainAliasName=%s)))(!(domainBackupMX=yes))(accountStatus=active)(enabledService=mail))
query_filter    = (&(objectClass=mailUser)(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s)))(accountStatus=active)(enabledService=mail)(enabledService=deliver))
query_filter    = (&(objectClass=mailUser)(|(mail=%s)(&(enabledService=shadowaddress)(shadowAddress=%s)))(accountStatus=active)(enabledService=mail)(enabledService=deliver))

diff shows no problems, as the above output proofs.

Hmmm ... hmm

18

Re: Existing Mail List bouncing after upgrade to 0.9.0

*) Postfix ldap query files are ok.
*) Dovecot config files are ok.
*) LDIF of mailing list account is ok.

No idea yet. Is it possible to let me login to your server for further debug? Would you like to buy a support ticket?
http://www.iredmail.org/support.html

19

Re: Existing Mail List bouncing after upgrade to 0.9.0

Is it possible to let me login to your server for further debug?

Due to restrictions on my side by various reasons ... i guess that couldn't happen.
Do you have further information what kind of user rights you would need, about privacy and how that happens ?

Would you like to buy a support ticket?
http://www.iredmail.org/support.html

That could be an option, if above scenario is not the only option to solve the problem. By the way a good option to support your outstanding work !

Please PM me / update support-page for those infos.

Best regards !

20

Re: Existing Mail List bouncing after upgrade to 0.9.0

jobu wrote:

Due to restrictions on my side by various reasons ... i guess that couldn't happen.

Well, according to logs/config files you pasted here, i have no idea why it happened without further debug. everything seems just fine. So i need to login to server to debug Postfix/Dovecot. If i cannot login to server, i'm afraid that i cannot help much.