I'm trying to set up a mail server on an Amazon EC2 Micro instance - following this post by flurdy. I've installed Postfix, Courier IMAP and Squirrel Mail. I've been testing the ability to send and receive emails via postfix - and this is working fine. I've connected to SquirrelMail succesfully - however the inbox is blank.

It appears the email files are being created at /var/spool/mail/myuser as opposed to /var/spool/mail/virtual/myuser. At first I couldn't connect to SquirrelMail - because the myuser directory wasn't initiated within virtual/. So I manually added this via

maildirmake myuser

The issue now is that the emails are not being stored within /var/spool/mail/virtual/myuser directory, but still in /var/spool/mail/myuser file.

Edit > postconf -n

alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
delay_warning_time = 4h
disable_vrfy_command = yes
inet_interfaces = all
local_recipient_maps =
mailbox_size_limit = 0
maximal_backoff_time = 8000s
maximal_queue_lifetime = 7d
minimal_backoff_time = 1000s
mydestination = $mydomain, $myhostname, localhost, localhost.localdomain
mynetworks = [::ffff:]/104 [::1]/128
mynetworks_style = host
myorigin = mymailexample.co.uk
readme_directory = no
recipient_delimiter = +
relayhost =
smtp_helo_timeout = 60s
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_client_restrictions = reject_rbl_client sbl.spamhaus.org, reject_rbl_client blackholes.easynet.nl, reject_rbl_client dnsbl.njabl.org
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_hard_error_limit = 12
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname, permit
smtpd_recipient_limit = 16
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, permit
smtpd_sender_restrictions = permit_mynetworks, warn_if_reject reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_pipelining, permit
smtpd_soft_error_limit = 3
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
unknown_local_recipient_reject_code = 450
virtual_alias_maps = mysql:/etc/postfix/mysql_alias.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = /var/spool/mail/virtual
virtual_mailbox_domains = mysql:/etc/postfix/mysql_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_mailbox.cf
virtual_uid_maps = static:5000

Edit> This is the result of the concat(home,'/',maildir) from the SQL query - You can see the mail directory ends with a slash /


Solved> I noticed in the mail.log there was the following>

postfix/trivial-rewrite[16423]: warning: do not list domain mymailexample.co.uk in BOTH mydestination and virtual_mailbox_domains
postfix/virtual[17251]: 149535DC7: to=, relay=virtual, delay=0.14, delays=0.12/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)

I updated /etc/postfix/main.cf to

mydestination = mail.mymailexample.co.uk, localhost, localhost.localdomain

And it worked. Warning disappears and the logs now reveal (delivered to maildir)

postfix/virtual[17251]: 149535DC7: to=, relay=virtual, delay=0.14, delays=0.12/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to maildir)
  • Please show non-verbose logs of a single message being delivered to the wrong mailbox (grep the Queue-ID.)
    – adaptr
    Jan 16, 2013 at 15:58

1 Answer 1


As documented, in order to deliver in maildir format, the mailbox location must end with a slash:

joe@example.com  example.com/joe/

This, and this only, tells postfix to deliver to a maildir.

Of course, there could be other problems preventing it from working, but we don't know.

  • I've added an edit to my Question. Not sure what else it could be? But the mailbox location has the ending slash Jan 16, 2013 at 14:59
  • You can start by including the output of postconf -n with your post.
    – adaptr
    Jan 16, 2013 at 15:21
  • Cheers - I've added the output.. Jan 16, 2013 at 15:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.