1

Topic: iRedMail sends email but does not receive

============ Required information ====
- iRedMail version (check /etc/iredmail-release): 0.9.8
- Linux/BSD distribution name and version: Ubuntu 16.04
- Store mail accounts in which backend (LDAP/MySQL/PGSQL): MySQL
- Web server (Apache or Nginx): Nginx
- Manage mail accounts with iRedAdmin-Pro? No
- [IMPORTANT] Related original log or error message is required if you're experiencing an issue.
====

I can send e-mails with the newly installed iRedMail, but I can't receive them. I think there is a problem with Dovecot, see logs for more info.

Sample of /var/log/mail.log:

Apr 29 20:58:28 mail postfix/amavis/smtp[8363]: 47627181B57: to=<me@example.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.27, delays=0.14/0/0/0.13, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 6C2DF181B5E)
Apr 29 20:58:28 mail postfix/qmgr[2444]: 47627181B57: removed
Apr 29 20:58:28 mail postfix/pipe[8508]: 6C2DF181B5E: to=<me@example.com>, relay=dovecot, delay=0.04, delays=0.01/0.01/0/0.02, dsn=4.3.0, status=deferred (temporary failure)


/var/log/dovecot/dovecot.log:

Apr 29 20:58:28 mail dovecot: lda: Fatal: Internal error occurred. Refer to server log for more information.
(and a lot more of the same error)

/var/log/dovecot/lda.log:

Apr 29 20:58:28 mail dovecot: lda(me@example.com): Error: userdb lookup: connect(/var/run/dovecot/auth-userdb) failed: Permission denied (euid=2000(vmail) egid=2000(vmail) UNIX perms appear ok (ACL/MAC wrong?))

Could anyone help me solve this? If you need more info please let me know!

----

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

2

Re: iRedMail sends email but does not receive

*) Does restarting Dovecot service works?
*) Please try to turn on debug mode in Dovecot, and try to send email to your server again. We need debug log for troubleshooting.
FYI: https://docs.iredmail.org/debug.dovecot.html

3 (edited by pim 2018-04-30 15:11:51)

Re: iRedMail sends email but does not receive

ZhangHuangbin wrote:

*) Does restarting Dovecot service works?
*) Please try to turn on debug mode in Dovecot, and try to send email to your server again. We need debug log for troubleshooting.
FYI: https://docs.iredmail.org/debug.dovecot.html


1. I have tried restarting dovecot, rebooting the server and reinstalling the server + iRedMail (on Ubuntu 16.04.3 & 16.04.4) all multiple times but I keep getting the same problem

2. I turned on debug mode and get the below logs, I can't see a lot of change or should there be an other log somewhere?

/var/log/dovecot/dovecot.log:

Apr 30 07:53:43 mail dovecot: lda(me@example.com): Debug: Loading modules                                                                                                                                                              from directory: /usr/lib/dovecot/modules
Apr 30 07:53:43 mail dovecot: lda(me@example.com): Debug: Module loaded: /                                                                                                                                                             usr/lib/dovecot/modules/lib01_acl_plugin.so
Apr 30 07:53:43 mail dovecot: lda(me@example.com): Debug: Module loaded: /                                                                                                                                                             usr/lib/dovecot/modules/lib10_quota_plugin.so
Apr 30 07:53:43 mail dovecot: lda(me@example.com): Debug: Module loaded: /                                                                                                                                                             usr/lib/dovecot/modules/lib15_notify_plugin.so
Apr 30 07:53:43 mail dovecot: lda(me@example.com): Debug: Module loaded: /                                                                                                                                                             usr/lib/dovecot/modules/lib20_mail_log_plugin.so
Apr 30 07:53:43 mail dovecot: lda(me@example.com): Debug: Module loaded: /                                                                                                                                                             usr/lib/dovecot/modules/lib20_mailbox_alias_plugin.so
Apr 30 07:53:43 mail dovecot: lda(me@example.com): Debug: Module loaded: /                                                                                                                                                             usr/lib/dovecot/modules/lib90_sieve_plugin.so
Apr 30 07:53:43 mail dovecot: lda(me@example.com): Debug: Module loaded: /                                                                                                                                                             usr/lib/dovecot/modules/lib90_stats_plugin.so
Apr 30 07:53:43 mail dovecot: lda: Fatal: Internal error occurred. Refer to serv                                                                                                                                                             er log for more information.

/var/log/dovecot/lda.log:

Apr 30 09:03:43 mail dovecot: lda(me@example.com): Error: userdb lookup: connect(/var/run/dovecot/auth-userdb) failed: Permission denied (euid=2000(vmail) egid=2000(vmail) UNIX perms appear ok (ACL/MAC wrong?), dir owned by 0:0 mode=0755)

4

Re: iRedMail sends email but does not receive

pim wrote:

Apr 30 09:03:43 mail dovecot: lda(me@example.com): Error: userdb lookup: connect(/var/run/dovecot/auth-userdb) failed: Permission denied (euid=2000(vmail) egid=2000(vmail) UNIX perms appear ok (ACL/MAC wrong?), dir owned by 0:0 mode=0755)

Did you change any Dovecot config file?

5

Re: iRedMail sends email but does not receive

ZhangHuangbin wrote:
pim wrote:

Apr 30 09:03:43 mail dovecot: lda(me@example.com): Error: userdb lookup: connect(/var/run/dovecot/auth-userdb) failed: Permission denied (euid=2000(vmail) egid=2000(vmail) UNIX perms appear ok (ACL/MAC wrong?), dir owned by 0:0 mode=0755)

Did you change any Dovecot config file?


No I did not, I only turned on the debug as described above.

I tried installing iRedMail several times on clean systems (16.04.3 & 16.04.4) so it should be a 100% clean config file.

But I will include the dovecot.conf below, maybe you can see something strange.

# More details about Dovecot settings:
#   - http://wiki2.dovecot.org/
#   - http://wiki2.dovecot.org/Variables

# Listen addresses.
#   - '*' means all available IPv4 addresses.
#   - '[::]' means all available IPv6 addresses.
# Listen on all available addresses by default
listen = * [::]

#base_dir = /var/run/dovecot
mail_plugins = quota mailbox_alias acl mail_log notify stats

# Enabled mail protocols.
protocols = pop3 imap sieve lmtp

# User/group who owns the message files:
mail_uid = 2000
mail_gid = 2000

# Assign uid to virtual users.
first_valid_uid = 2000
last_valid_uid = 2000

# Logging. Reference: http://wiki2.dovecot.org/Logging
#
# Use syslog
syslog_facility = local5
# Log file path if we use internal log system
#log_path = /var/log/dovecot/dovecot.log

# Debug
mail_debug = yes
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
# Possible values: no, plain, sha1.
auth_verbose_passwords = no

# SSL: Global settings.
# Refer to wiki site for per protocol, ip, server name SSL settings:
# http://wiki2.dovecot.org/SSL/DovecotConfiguration
ssl_protocols = !SSLv2 !SSLv3
ssl = required
verbose_ssl = no
#ssl_ca = </path/to/ca
ssl_cert = </etc/ssl/certs/iRedMail.crt
ssl_key = </etc/ssl/private/iRedMail.key

# Fix 'The Logjam Attack'
ssl_cipher_list = ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5
ssl_prefer_server_ciphers = yes

# With disable_plaintext_auth=yes AND ssl=required, STARTTLS is mandatory.
# Set disable_plaintext_auth=no AND ssl=yes to allow plain password transmitted
# insecurely.
disable_plaintext_auth = yes

# Allow plain text password per IP address/net
#remote 192.168.0.0/24 {
#   disable_plaintext_auth = no
#}

# Mail location and mailbox format.
mail_location = maildir:%Lh/Maildir/:INDEX=%Lh/Maildir/

# Authentication related settings.
# Append this domain name if client gives empty realm.
#auth_default_realm = mydomain.com

# Authentication mechanisms.
auth_mechanisms = PLAIN LOGIN

# Limits the number of users that can be logging in at the same time.
# Default is 100. This can be overridden by `process_limit =` in
# `service [protocol]` block.
# e.g.
#       protocol imap-login {
#           ...
#           process_limit = 500
#       }
#default_process_limit = 100

# Mail delivery log format
deliver_log_format = from=%{from}, envelope_sender=%{from_envelope}, subject=%{subject}, msgid=%m, size=%{size}, %$

service auth {
    unix_listener /var/spool/postfix/private/dovecot-auth {
        user = postfix
        group = postfix
        mode = 0666
    }
    unix_listener auth-master {
        user = vmail
        group = vmail
        mode = 0666
    }
    unix_listener auth-userdb {
        user = vmail
        group = vmail
        mode = 0660
    }
}

# LMTP server (Local Mail Transfer Protocol).
# Reference: http://wiki2.dovecot.org/LMTP
service lmtp {
    user = vmail

    # For higher volume sites, it may be desirable to increase the number of
    # active listener processes. A range of 5 to 20 is probably good for most
    # sites.
    process_min_avail = 5

    # Logging.
    # Require 'log_path =' in 'protocol lmtp {}' block.
    executable = lmtp -L

    # Listening on socket file and TCP
    unix_listener /var/spool/postfix/private/dovecot-lmtp {
        user = postfix
        group = postfix
        mode = 0600
    }

    inet_listener lmtp {
        # Listen on localhost (ipv4)
        address = 127.0.0.1
        port = 24
    }
}

# Virtual mail accounts.
userdb {
    args = /etc/dovecot/dovecot-mysql.conf
    driver = sql
}
passdb {
    args = /etc/dovecot/dovecot-mysql.conf
    driver = sql
}

# Master user.
# Master users are able to log in as other users. It's also possible to
# directly log in as any user using a master password, although this isn't
# recommended.
# Reference: http://wiki2.dovecot.org/Authentication/MasterUsers
auth_master_user_separator = *
passdb {
    driver = passwd-file
    args = /etc/dovecot/dovecot-master-users
    master = yes
}

plugin {
    # Quota configuration.
    # Reference: http://wiki2.dovecot.org/Quota/Configuration
    quota = dict:user::proxy::quotadict

    # Set default quota rule if no quota returned from SQL/LDAP query.
    #quota_rule = *:storage=1G
    #quota_rule2 = *:messages=0
    #quota_rule3 = Trash:storage=1G
    #quota_rule4 = Junk:ignore

    # Quota warning.
    #
    # If user suddenly receives a huge mail and the quota jumps from
    # 85% to 95%, only the 95% script is executed.
    #
    # Only the command for the first exceeded limit is executed, so configure
    # the highest limit first.
    quota_warning = storage=100%% quota-warning 100 %u
    quota_warning2 = storage=95%% quota-warning 95 %u
    quota_warning3 = storage=90%% quota-warning 90 %u
    quota_warning4 = storage=85%% quota-warning 85 %u

    # allow user to become max 10% (or 50 MB) over quota
    quota_grace = 10%%
    #quota_grace = 50 M

    # Custom Quota Exceeded Message.
    # You can specify the message directly or read the message from a file.
    #quota_exceeded_message = Quota exceeded, please try again later.
    #quota_exceeded_message = </path/to/quota_exceeded_message.txt

    # Plugin: expire.
    #expire = Trash 7 Trash/* 7 Junk 30
    #expire_dict = proxy::expire

    # ACL and share folder
    acl = vfile
    acl_shared_dict = proxy::acl

    # By default Dovecot doesn't allow using the IMAP "anyone" or
    # "authenticated" identifier, because it would be an easy way to spam
    # other users in the system. If you wish to allow it,
    #acl_anyone = allow

    # Pigeonhole managesieve service.
    # Reference: http://wiki2.dovecot.org/Pigeonhole/Sieve/Configuration
    # Per-user sieve settings.
    sieve_dir = %Lh/sieve
    sieve = %Lh/sieve/dovecot.sieve

    # Global sieve settings.
    sieve_global_dir = /var/vmail/sieve
    # Note: if user has personal sieve script, global sieve rules defined in
    #       sieve_default will be ignored. Please use sieve_before or
    #       sieve_after instead.
    #sieve_default =

    sieve_before = /var/vmail/sieve/dovecot.sieve
    #sieve_after =

    # The maximum number of redirect actions that can be performed during a
    # single script execution.
    # The meaning of 0 differs based on your version. For pigeonhole-0.3.0 and
    # beyond this means that redirect is prohibited. For older versions,
    # however, this means that the number of redirects is unlimited.
    sieve_max_redirects = 30

    # Reference: http://wiki2.dovecot.org/Plugins/MailboxAlias
    mailbox_alias_old = Sent
    mailbox_alias_new = Sent Messages
    mailbox_alias_old2 = Sent
    mailbox_alias_new2 = Sent Items

    # Events to log. `autoexpunge` is included in `expunge`
    # Defined in https://github.com/dovecot/core/blob/master/src/plugins/mail-log/mail-log-plugin.c
    mail_log_events = delete undelete expunge mailbox_delete mailbox_rename
    mail_log_fields = uid box msgid size from subject

    # stats
    #
    # how often to session statistics (must be set)
    stats_refresh = 30 secs
    # track per-IMAP command statistics (optional)
    stats_track_cmds = yes
}

service stats {
    fifo_listener stats-mail {
        user = vmail
        mode = 0644
    }

    inet_listener {
        address = 127.0.0.1
        port = 24242
    }
}

service quota-warning {
    executable = script /usr/local/bin/dovecot-quota-warning.sh
    unix_listener quota-warning {
        user = vmail
        group = vmail
        mode = 0660
    }
}

service dict {
    unix_listener dict {
        mode = 0660
        user = vmail
        group = vmail
    }
}

dict {
    #expire = db:/var/lib/dovecot/expire/expire.db
    quotadict = mysql:/etc/dovecot/dovecot-used-quota.conf
    acl = mysql:/etc/dovecot/dovecot-share-folder.conf
}

protocol lda {
    # Reference: http://wiki2.dovecot.org/LDA
    mail_plugins = $mail_plugins sieve
    lda_mailbox_autocreate = yes
    lda_mailbox_autosubscribe = yes

    # Log file path if we use internal log system
    #log_path = /var/log/dovecot/sieve.log
}

protocol lmtp {
    # Log file path if we use internal log system
    #log_path = /var/log/dovecot/lmtp.log

    # Plugins
    mail_plugins = quota sieve

    # Address extension delivery
    lmtp_save_to_detail_mailbox = yes
    recipient_delimiter = +
}

protocol imap {
    mail_plugins = $mail_plugins imap_quota imap_acl imap_stats
    imap_client_workarounds = tb-extra-mailbox-sep

    # Maximum number of IMAP connections allowed for a user from each IP address.
    # NOTE: The username is compared case-sensitively.
    # Default is 10.
    # Increase it to avoid issue like below:
    # "Maximum number of concurrent IMAP connections exceeded"
    mail_max_userip_connections = 30
}

protocol pop3 {
    mail_plugins = $mail_plugins
    pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
    pop3_uidl_format = %08Xu%08Xv

    # Maximum number of IMAP connections allowed for a user from each IP address.
    # NOTE: The username is compared case-sensitively.
    # Default is 10.
    mail_max_userip_connections = 30

    # POP3 logout format string:
    #  %i - total number of bytes read from client
    #  %o - total number of bytes sent to client
    #  %t - number of TOP commands
    #  %p - number of bytes sent to client as a result of TOP command
    #  %r - number of RETR commands
    #  %b - number of bytes sent to client as a result of RETR command
    #  %d - number of deleted messages
    #  %m - number of messages (before deletion)
    #  %s - mailbox size in bytes (before deletion)
    # Default format doesn't have 'in=%i, out=%o'.
    #pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s, in=%i, out=%o
}

# Login processes. Refer to Dovecot wiki for more details:
# http://wiki2.dovecot.org/LoginProcess
service imap-login {
    #inet_listener imap {
    #    port = 143
    #}
    #inet_listener imaps {
    #    port = 993
    #    ssl = yes
    #}

    service_count = 1

    # To avoid startup latency for new client connections, set process_min_avail
    # to higher than zero. That many idling processes are always kept around
    # waiting for new connections.
    #process_min_avail = 0

    # number of simultaneous IMAP connections
    process_limit = 500

    # vsz_limit should be fine at its default 64MB value
    #vsz_limit = 64M
}

service pop3-login {
    #inet_listener pop3 {
    #    port = 110
    #}
    #inet_listener pop3s {
    #    port = 995
    #    ssl = yes
    #}

    service_count = 1

    # number of simultaneous POP3 connections
    #process_limit = 500
}

service managesieve-login {
    inet_listener sieve {
        # Listen on localhost (ipv4)
        address = 127.0.0.1
        port = 4190
    }
}

namespace {
    type = private
    separator = /
    prefix =
    inbox = yes

    # Refer to document for more details about alias mailbox:
    # http://wiki2.dovecot.org/MailboxSettings
    #
    # Sent
    mailbox Sent {
        auto = subscribe
        special_use = \Sent
    }
    mailbox "Sent Messages" {
        auto = no
        special_use = \Sent
    }
    mailbox "Sent Items" {
        auto = no
        special_use = \Sent
    }

    mailbox Drafts {
        auto = subscribe
        special_use = \Drafts
    }

    # Trash
    mailbox Trash {
        auto = subscribe
        special_use = \Trash
    }

    mailbox "Deleted Messages" {
        auto = no
        special_use = \Trash
    }

    # Junk
    mailbox Junk {
        auto = subscribe
        special_use = \Junk
    }
    mailbox Spam {
        auto = no
        special_use = \Junk
    }
    mailbox "Junk E-mail" {
        auto = no
        special_use = \Junk
    }

    # Archive
    mailbox Archive {
        auto = no
        special_use = \Archive
    }
    mailbox Archives {
        auto = no
        special_use = \Archive
    }
}

namespace {
    type = shared
    separator = /
    prefix = Shared/%%u/
    location = maildir:%%Lh/Maildir/:INDEX=%%Lh/Maildir/Shared/%%Ld/%%Ln

    # this namespace should handle its own subscriptions or not.
    subscriptions = yes
    list = children
}

# Public mailboxes.
# Refer to Dovecot wiki page for more details:
# http://wiki2.dovecot.org/SharedMailboxes/Public
#namespace {
#    type = public
#    separator = /
#    prefix = Public/
#    location = maildir:/var/vmail/public:CONTROL=%Lh/Maildir/public:INDEXPVT=%Lh/Maildir/public
#
#    # Allow users to subscribe to the public folders.
#    subscriptions = yes
#}

!include_try /etc/dovecot/iredmail/*.conf

6

Re: iRedMail sends email but does not receive

pim wrote:

service auth {
    ...
    unix_listener auth-userdb {
        user = vmail
        group = vmail
        mode = 0660
    }
}

According to this setting, file owner and permission of /var/run/dovecot/auth-userdb should be vmail:vmail, 0660. But the error message says it's owned by root:root, 0755.

Could you try to set the owner+permission manually and try again? (just a quick test)