背景

为了某些不可告人的秘密,我决定搭建一个自己的邮箱服务器。
当然,被人要你的邮箱的时候,你拿出自己域名的邮箱,也挺有场(zhuang)子(bi)的。

资源准备

  1. ubuntu公网服务器一台(其他linux系统同理)
  2. 有效一级域名一个,假设是example.com
  3. 若干邮件客户端、其他邮箱账户,供测试用

配置步骤

配置DNS解析

配置DNS是为了告诉其他人,你的域名收发件服务器是哪一个;以及防止自己的邮件被其他站点认为是垃圾邮件(这一点折腾了我很久,所以先写)
配置一下几条记录

主机记录 记录类型 记录值 备注
@ A <server ip> 这一点其实容易忽略,但是如果不把你的一级域名直接指向你的邮箱服务器,gmail很可能把你的邮件扔到垃圾邮件里面。
mail A <server ip> 这里的“mail”其实可以为任意值,通常为“mail”
@ MX mail.example.com 指定你的域名的收发件服务器是哪个
@ TXT v=spf1 a mx -all 配置SPF记录,用于反垃圾邮件,想进一步了解可以查阅相关资料
_dmarc TXT v=DMARC1;p=none;rua=yourname@example.com 配置DMARC记录,用于反垃圾邮件,想进一步了解可以查阅相关资料
smtp CNAME mail.example.com
pop3 CNAME mail.example.com
imap CNAME mail.example.com 以上为常用地址

配置主机名hostname

执行命令sudo hostnamectl set-hostname mail.example.com
重启机器。

安装postfix

postfix是用来做“对外”任务的,就是与其他站点进行收发件交互。

执行命令sudo apt install postfix
一路确定,除了第二步,输入example.com

然后执行命令sudo vim /etc/postfix/main.cf修改配置文件。
这里先上我的配置文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

append_dot_mydomain = no

readme_directory = no

#此处隐藏了部分tls的配置

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, example.com, localhost, localhost.localdomain, localhost
relayhost =

#此处需要添加你的公网ip地址或子网
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

home_mailbox = .Mail/

queue_directory = /var/spool/postfix
broken_sasl_auth_clients = yes

#这里是为了与接下来要用到的dovecot配合
smtpd_sasl_type = dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = example.com
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
compatibility_level = 2
smtpd_milters = local:/var/run/dkim-milter/dkim.sock
non_smtpd_milters = local:/var/run/dkim-milter/dkim.sock
milter_protocol = 2
milter_default_action = accept

安装dovecot

dovecot是用来做“对内”任务的,就是与各个邮箱客户端进行同步(毕竟我们不能每次都登陆这台主机来收发邮件)
执行命令sudo apt install dovecot-common dovecot-imapd dovecot-pop3d
dovecot完整的配置文件比较复杂。
先进入/etc/dovecot/conf.d/

打开10-master.conf,找到第95行,修改为如下:

1
2
3
4
5
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

打开10-auth.conf,找到第100行,修改为:
auth_mechanisms = plain login

打开10-mail.conf,找到第30行,修改为:
mail_location = maildir:~/.Mail 注:此处与postfix配置文件中的home_mailbox一项配置相同即可。

打开20-pop3.conf,找到第50行,去除注释:
pop3_uidl_format = %08Xu%08Xv

重启

sudo service postfix restart
sudo service dovecot restart

此时,使用邮箱客户端即可连接使用。
服务器内所有都可以登陆。
smtp: smtp.example.com port: 25
imap: imap.example.com port: 143
pop3: pop3.example.com port: 110

后续

下一篇文章将会讲解如何配置postfix及dovecot的SSL证书。