build a mail server for myself

使用环境

  • centos7.6

    环境搭建

    域名解析

  • 解析域名添加两条记录
    1
    2
    3
    4
    5
    6
    7
    8
    9
    A 记录
    记录类型:A
    主机记录:@
    记录值:ip address

    MX 记录
    记录类型:MX
    主机记录:@
    记录值:我的域名
  • 生效检查
  1. ping mydomain, 如果返回了刚刚解析的ip地址,则成功。
  2. 检查MX记录, nslookup -q=mx mydomain,如果返回的信息中有域名,则成功。

postfix

  1. 安装
    1
    yum -y install postfix
  2. 配置,参考如下
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    postconf -e 'myhostname = server.cuimouren.cn'
    postconf -e 'mydestination = localhost, localhost.localdomain'
    postconf -e 'myorigin = $mydomain'
    postconf -e 'mynetworks = 127.0.0.0/8'
    postconf -e 'inet_interfaces = all'
    postconf -e 'inet_protocols = all'
    postconf -e 'mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain'
    postconf -e 'home_mailbox = Maildir/'
    postconf -e 'smtpd_sasl_type = dovecot'
    postconf -e 'smtpd_sasl_path = private/auth'
    postconf -e 'smtpd_sasl_auth_enable = yes'
    postconf -e 'broken_sasl_auth_clients = yes'
    postconf -e 'smtpd_sasl_authenticated_header = yes'
    postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
    postconf -e 'smtpd_use_tls = yes'
    postconf -e 'smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem'
    postconf -e 'smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem'
  • 配置中 Postfix 使用 sasl 和 tls 来完成身份认证和传输信息加密。
    试验中使用了 Dovecot 默认的 ssl 证书和私钥,如果你需要修改为自己的,请替换最后两行配置的路径。
  1. 配置 smtps
  • 部分邮件客户端依赖于使用 465 端口提供加密连接,所以我们修改配置,允许 Postfix 使用 465 端口发送邮件。打开 /etc/postfix/master.cf 文件,将如下两行前的 # 去除:
    1
    2
    smtps inet n - n - - smtpd
    -o smtpd_tls_wrappermode=yes
  1. 启动
  • 使用以下命令,将 Postfix 设为自动启动并首次启动该服务:
    1
    2
    systemctl enable postfix.service
    systemctl start postfix.service
  1. log
  • Postfix 系统的日志文件在系统的这个目录下的 /var/log/maillog 文件,此文件记录了 Postfix 服务器的运行状态信息。

    dovecot

  1. 安装
    1
    yum -y install dovecot
  2. 配置
  • 打开 /etc/dovecot/dovecot.conf 文件,在最下方加入以下配置:
    1
    2
    3
    4
    5
    6
    7
    8
    ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
    ssl_key = </etc/pki/dovecot/private/dovecot.pem

    protocols = imap pop3 lmtp
    listen = *
    mail_location = Maildir:~/Maildir
    disable_plaintext_auth = no

  • 如果前面你修改为了自己的 ssl 证书和私钥,请替换开始两行配置的路径。
  • 打开 /etc/dovecot/conf.d/10-master.conf 文件,找到 service auth 部分,将以下行前面的 # 去除:
    1
    2
    3
    unix_listener /var/spool/postfix/private/auth {  
    mode = 0666
    }
  1. 启动
    1
    2
    systemctl enable dovecot.service
    systemctl start dovecot.service
  2. log
  • 查看 /var/log/maillog 是否启动成功,如下所示为成功。
    1
    2
    3
    4
    Jun 26 12:00:28 localhost postfix/postfix-script[28338]: starting the Postfix mail system
    Jun 26 12:00:29 localhost postfix/master[28340]: daemon started -- version 2.10.1, configuration /etc/postfix
    Jun 26 12:28:40 localhost dovecot: master: Dovecot v2.2.10 starting up for imap, pop3, lmtp (core dumps disabled)

    添加用户

  • 添加用户
    1
    uaeradd username
  • 设置密码
    1
    passwd username

    发送邮件

  • su mailuser 切换用户
  • 发送邮件
    1
    echo "邮件内容" | mail -s "邮件主题"  目标邮箱