[Ubuntu] 架設郵件伺服器 (Postfix + Dovecot)

Postfix

  1. sudo hostnamectl set-hostname a1go.ai
  2. hostname -f確認 hostname
  3. sudo apt install postfix

    1. General mail configuration type: Internet Site
    2. System mail name: a1go.ai
  4. DNS setting1Namecheap:
    MAIL SETTINGS → Custom MX
    → Type: MX Record | Host: @ | Mail Server: a1go.ai | Priority: 0 | TTL: Automatic

※ Postfix 的 log 在 /var/log/mail.log

Dovecot

  1. sudo apt install dovecot-core dovecot-lmtpd
  2. sudo useradd vmail
  3. sudo mkdir /var/mail/vhosts
    sudo chown vmail:vmail /var/mail/vhosts (把 owner 和 group 的 ownership 都改成vmail)
  4. sudo nano /etc/dovecot/conf.d/10-mail.conf
    修改 mail_location = maildir:/var/mail/vhosts/%d/%n
    (user@domain – %n: user part, %d: domain part)
  5. sudo nano /etc/dovecot/conf.d/10-auth.conf
    1. !include auth-system.conf.ext → #!include auth-system.conf.ext
    2. #!include auth-static.conf.ext → !include auth-static.conf.ext
  6. sudo nano /etc/dovecot/conf.d/auth-static.conf.ext 加入:
    # static userdb with shared uid and gid
    userdb {
      driver = static
      args = uid=vmail gid=vmail
    }
    
    # using password file
    passdb {
      driver = passwd-file
      args = /etc/dovecot/passwd
    }
  7. 新增 Dovecot User:
    sudo sh -c "echo {user}@{domain}:{passwd}:::::: >> /etc/dovecot/passwd"
  8. sudo nano /etc/dovecot/conf.d/10-master.conf將以下部分
    service lmtp {
      unix_listener lmtp {
        #mode = 0666
      }
    
      ...
    }

    改動為:

    service lmtp {
      unix_listener /var/spool/postfix/private/dovecot-lmtp {
        mode = 0600
        group = postfix
        user = postfix
      }
    
      ...
    }
  9. sudo nano /etc/postfix/main.cf加入:
    virtual_mailbox_domains = a1go.ai
    virtual_transport = lmtp:unix:private/dovecot-lmtp

    還要把 virtual_mailbox_domains(a1go.ai) 從 mydestination 刪除:
    mydestination = localhost # $myhostname, a1go.ai, localhost.ai, , localhost

  10. sudo service postfix restart
    sudo /etc/init.d/dovecot restart

※ 讀取信件
sudo doveadm fetch -u {user}@{domain} text.utf8 MAILBOX INBOX

Ref

  1. Dovecot Manual

Last Updated on 2023/10/19 by A1go

References

目錄
Bitnami