I have set up a mailserver using Postfix, Dovecot as my SASL and Rainloop as my WebClient. I'm using MySQL (after asking my last question) for my user accounts and passwords, and it's working properly, but there are two issues that I'm facing with. [THE SECOND IS SOLVED]

  1. I cannot receive email! (I just need employees to be in touch via email, they cannot receive any email at the moment, when I send email from one employee to the other, I can find no log file showing a sign of failure, I really have no idea what might be an issue for not being able to receive.)

  2. [SOLVED] Users can login via ThunderBird since it'll ask for confirmation on Certificate for both SMTP and IMAP. i.e. when I'm logging in, I should accept the certificate, and the first time I'm sending a mail, I should accept another certificate, and then it will work. But Outlook cannot log in since it's only asking certificate once and for IMAP.

Here is my config files:


myhostname = mail.domain.tld
mydomain = domain.tld
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#home_mailbox = Maildir/

#relayhost =

#mynetworks =,, [::1]/128

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
#smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
#      reject_unauth_destination

#alias_maps = hash:/etc/aliases
#alias_database = hash:/etc/aliases

virtual_transport = lmtp:unix:private/dovecot-lmtp

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf, mysql:/etc/postfix/mysql-virtual-email2email.cf

mailbox_size_limit = 209715200
message_size_limit = 57671680


smtp      inet  n       -       n       -       -       smtpd
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
submission inet n       -       -       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_wrappermode=no
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
smtps     inet  n       -       n       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

I have 3 DB tables, virtual_domains, virtual_users, virtual_aliases. Postfix knows all of them, and it's been proven by using postmap commands, and the configs are set in mysql-virtual-mailbox-domains.cf, mysql-virtual-mailbox-maps.cf, mysql-virtual-email2email.cf, mysql-virtual-alias-maps.cf.


disable_plaintext_auth = yes

ssl_cert = </etc/ssl/certs/mailcert.pem
ssl_key = </etc/ssl/private/mail.key

!include conf.d/*.conf

# A config file can also tried to be included without giving an error if
# it's not found:
!include_try local.conf

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext

service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix

protocol imap {
  mail_plugins = " autocreate"
#   $mail_plugins = autocreate
plugin {
  autocreate = Trash
  autocreate2 = Sent
  autosubscribe = Trash
  autosubscribe2 = Sent


passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n


namespace inbox {
  # Namespace type: private, shared or public
  #type = private

  # Hierarchy separator to use. You should use the same separator for all
  # namespaces or some clients get confused. '/' is usually a good one.
  # The default however depends on the underlying mail storage format.
  #separator = 

  # Prefix required to access this namespace. This needs to be different for
  # all namespaces. For example "Public/".
  #prefix = 

  # Physical location of the mailbox. This is in same format as
  # mail_location, which is also the default for it.
  #location =

  # There can be only one INBOX, and this setting defines which namespace
  # has it.
  inbox = yes

  # If namespace is hidden, it's not advertised to clients via NAMESPACE
  # extension. You'll most likely also want to set list=no. This is mostly
  # useful when converting from another server with different namespaces which
  # you want to deprecate but still keep working. For example you can create
  # hidden namespaces with prefixes "~/mail/", "~%u/mail/" and "mail/".
  #hidden = no

  # Show the mailboxes under this namespace with LIST command. This makes the
  # namespace visible for clients that don't support NAMESPACE extension.
  # "children" value lists child mailboxes, but hides the namespace prefix.
  #list = yes

  # Namespace handles its own subscriptions. If set to "no", the parent
  # namespace handles them (empty prefix should always have this as "yes")
  #subscriptions = yes

mbox_write_locks = fcntl
mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail

I'm open to any suggestion, even if it's starting from the scratch. But please be precise and explain in detail, I'm not an expert in setting up mail servers. Thanks in advance.

If anything else is needed, let me know and I will update the question with the required config files.


Guys, I have no idea why I cannot receive Email while everything seems to be correct, can anyone help? Any idea??

  • 1
    (1) How are you "using mail1@mydomaim.com"? Is this a Thunderbird configuration or something else? Please explain how you differentiate using one domain or the other. (2) Are you sure that Outlook isn't working? IME Neither Thunderbird nor Outlook tries to confirm the SMTP certificate until there's an email to send. – roaima Oct 3 '16 at 8:58
  • @roaima updated the question. Thanks. BTW, shall I ask you to read my last question too? I believe there should be a way. Thanks. – Parsa Samet Oct 3 '16 at 11:19
  • Do you have your domains defined in an external DNS, including MX record? Do you have a public IP address, or a NAT for this server? Why are mynetworks commented? – Rui F Ribeiro Oct 3 '16 at 11:23
  • @RuiFRibeiro Yes I have my domains defined in DNS, including my MX record. And no, I'm using NAT. And mynetworks was not commented, I just commented it to see if it works or not, and as you know, it did not. – Parsa Samet Oct 3 '16 at 11:47
  • Re your second point: The simplest method would probably be to use trusted certificates. E.g. use letsencrypt to create a domain verified certificate for your mail server. That will stop mail clients from asking whether they should accept it, circumventing the issue. – tarleb Oct 3 '16 at 11:49