[Dovecot] Postfix delivers mails to maildir and not to dovecot LDA for a virtual user
Tru Pheenix
trupheenix at gmail.com
Wed Nov 6 09:23:01 EET 2013
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