[Dovecot] Postfix delivers mails to maildir and not to dovecot LDA for a virtual user

Tru Pheenix trupheenix at gmail.com
Wed Nov 6 14:24:12 EET 2013


Fixed this issue. My transport table was having a "virtual:" entry against
my domain name instead of "dovecot:"

Now all is working! :)


On Wed, Nov 6, 2013 at 12:53 PM, Tru Pheenix <trupheenix at gmail.com> wrote:

> Hi
>
> I have been able to setup postfix and dovecot using postgres as the
> backend store with virtual user maps on Ubuntu 12.04 LTS Server.
>
> I have been following instructions from here:
> http://wiki2.dovecot.org/HowTo/DovecotPostgresql
>
> I haven't setup postfix to use saslauthd and PAM, instead I am using
> dovecot for SASL authentication. Rest of the table structures and query
> files are the same as from the wiki.
>
> SASL authentication works correctly for SMTP POP IMAP.
>
> I am able to send emails from a mail client such as Thunderbird with SASL
> authentication.
>
> However I am not able to receive emails for virtual users. I cannot figure
> out why. System users are getting their emails in the mail box correctly.
> Postfix fires the mailbox_command to hand over the mail to dovecot.
>
> This is how my *mail.log* looks when I send emails from an external
> domain:
>
> Nov  6 06:48:21 localhost postfix/smtpd[20053]: E075280C52: client=
> mail-ee0-f41.google.com[74.125.83.41]
> Nov  6 06:48:22 localhost postfix/cleanup[20064]: E075280C52: message-id=<
> CAJ+V0eCU891rSzSMVbcSy4zsRUk5GUp58b70Wv_WgZxLbKuyLw at mail.gmail.com>
> Nov  6 06:48:22 localhost postfix/qmgr[17492]: E075280C52: from=<
> me at gmail.com>, size=3124, nrcpt=1 (queue active)
> *Nov  6 06:48:22 localhost postfix/virtual[20066]: E075280C52:
> to=<someone at mydomain.com <someone at mydomain.com>>, relay=virtual,
> delay=0.85, delays=0.7/0.02/0/0.13, dsn=2.0.0, status=sent (delivered to
> maildir)*
> Nov  6 06:48:22 localhost postfix/qmgr[17492]: E075280C52: removed
> Nov  6 06:48:22 localhost postfix/smtpd[20053]: disconnect from
> mail-ee0-f41.google.com[74.125.83.41]
>
> Postfix seems to deliver the mail to maildir instead of the home directory
> of the virtual user. Incase of the system user, the logs indicate that the
> mailbox_command was fired and I do get to see the mail in the inbox.
>
> My postfix *main.cf <http://main.cf>*:
>
> alias_database = hash:/etc/aliases
> alias_maps = hash:/etc/aliases
> append_dot_mydomain = no
> biff = no
> broken_sasl_auth_clients = yes
> config_directory = /etc/postfix
> dovecot_destination_recipient_limit = 1
> inet_interfaces = all
> *mailbox_command = /usr/lib/dovecot/deliver -c
> /etc/dovecot/conf.d/01-mail-stack-delivery.conf -m "${EXTENSION}"*
> mailbox_size_limit = 0
> mydestination = localhost, localhost.localdomain, localhost
> myhostname = mydomain.com
> mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
> readme_directory = no
> recipient_delimiter = +
> relayhost =
> smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
> smtp_use_tls = yes
> smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
> smtpd_recipient_restrictions = reject_unknown_recipient_domain,
>     reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated,
>     reject_unauth_destination
> smtpd_sasl_auth_enable = yes
> smtpd_sasl_authenticated_header = yes
> smtpd_sasl_local_domain = $myhostname
> smtpd_sasl_path = private/dovecot-auth
> smtpd_sasl_security_options = noanonymous
> smtpd_sasl_type = dovecot
> smtpd_sender_restrictions = reject_unknown_sender_domain
> smtpd_tls_auth_only = yes
> smtpd_tls_cert_file = /root/certs/www.mydomain.com.pem
> smtpd_tls_key_file = /root/certs/www.mydomain.com.key
> smtpd_tls_mandatory_ciphers = medium
> smtpd_tls_mandatory_protocols = SSLv3, TLSv1
> smtpd_tls_received_header = yes
> smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
> smtpd_use_tls = yes
> tls_random_source = dev:/dev/urandom
> transport_maps = pgsql:/etc/postfix/transport.cf
> virtual_gid_maps = pgsql:/etc/postfix/gids.cf
> virtual_mailbox_base = /home
> virtual_mailbox_domains = mydomain.com
> *virtual_mailbox_maps = pgsql:/etc/postfix/mailboxes.cf
> <http://mailboxes.cf>*
> virtual_maps = pgsql:/etc/postfix/virtual.cf
> *virtual_transport = dovecot*
> virtual_uid_maps = pgsql:/etc/postfix/uids.cf
>
> I have included the virtual_transport parameter to indicate that dovecot
> is running as LDA. I have also included the pgsql query file in the
> virtual_mailbox_maps parameter.
>
> My *mailboxes.cf <http://mailboxes.cf> *file which points the email id of
> the virtual user to the appropriate mail path:
>
> user=mailreader
> password=secret
> dbname=mails
> table=postfix_mailboxes
> select_field=mailbox
> where_field=userid
> hosts=localhost
>
> My postfix *master.cf <http://master.cf>* file:
>
> smtp       inet  n       -       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
> proxywrite unix  -       -       n       -       1       proxymap
> smtp       unix  -       -       -       -       -       smtp
> relay      unix  -       -       -       -       -       smtp
> showq      unix  n       -       -       -       -       showq
> error      unix  -       -       -       -       -       error
> retry      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)
> *dovecot    unix  -       n       n       -       -       pipe*
> *    flags=DRhu user=vmailuser:vmailuser argv=/usr/lib/dovecot/deliver -f*
> *    ${sender} -d ${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}
>
> I have included the dovecot LDA service line above so that postfix can
> deliver to virtual users as per: http://wiki2.dovecot.org/LDA/Postfix
>
> This is my *doveconf -n* output:
>
> # 2.0.19: /etc/dovecot/dovecot.conf
> # OS: Linux 3.2.0-24-virtual i686 Ubuntu 12.04 LTS ext4
> auth_debug = yes
> auth_debug_passwords = yes
> auth_mechanisms = plain login digest-md5 cram-md5
> auth_verbose = yes
> mail_debug = yes
> *mail_location = maildir:/home/vmailuser/%d/%n/Maildir*
> managesieve_notify_capability = mailto
> managesieve_sieve_capability = fileinto reject envelope encoded-character
> vacation subaddress comparator-i;ascii-numeric relational regex imap4flags
> copy include variables body enotify environment mailbox date ihave
> passdb {
>   args = /etc/dovecot/dovecot-sql.conf
>   driver = sql
> }
> plugin {
>   sieve = ~/.dovecot.sieve
>   sieve_dir = ~/sieve
> }
> protocols = imap pop3 sieve
> service auth {
>   unix_listener /var/spool/postfix/private/dovecot-auth {
>     group = postfix
>     mode = 0660
>     user = postfix
>   }
> }
> ssl_cert = </root/certs/www.mydomain.com.pem
> ssl_cipher_list =
> ALL:!LOW:!SSLv2:ALL:!aNULL:!ADH:!eNULL:!EXP:RC4+RSA:+HIGH:+MEDIUM
> ssl_key = </root/certs/www.mydomain.com.key
> userdb {
>   args = /etc/dovecot/dovecot-sql.conf
>   driver = sql
> }
> verbose_ssl = yes
> protocol imap {
>   imap_client_workarounds = delay-newmail
>   mail_max_userip_connections = 10
> }
> protocol pop3 {
>   mail_max_userip_connections = 10
>   pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
> }
> protocol lda {
>   deliver_log_format = msgid=%m: %$
>   mail_plugins = sieve
>   postmaster_address = postmaster
>   quota_full_tempfail = yes
>   rejection_reason = Your message to <%t> was automatically rejected:%n%r
> }
>
>
> I have setup *mail_location *to point to the home directory of vmailuser
> under which for the given domain the virtual users mail dir is created.
> However, the mails clearly don't seem to get delivered for the virtual
> user.
>
> Any help to fix this would be appreciated. Thanks! :)
>
> Regards
>
> Tru Pheenix
>
>


More information about the dovecot mailing list