在局域网建立一个邮箱服务器
服务器系统为Debian,使用postfix和dovecot可以在局域网(包括如基于tinc等组网方案的虚拟局域网)快速搭建一个支持pop3和imap的邮箱服务器,以兼容如Thunderbird或系统自带的邮件客户端,用于局域网内传送通知、文件等。
域名配置
首先需要配置好域名,如果有自己的域名,可以直接将增加解析记录。由于是局域网,如果有局域网DNS服务器,也可以自行指定一个域名,加入局域网的DNS服务器上。如果设备数量较少,也可以将解析加在每台设备的hosts文件中。
此处以lab.lan为例,假设服务器IP地址为192.168.1.1,局域网为192.168.1.0/24,需要增加如下两条解析记录即可
192.168.1.1 lab.lan
192.168.1.1 mail.lab.lan
服务端配置
在用作邮件服务器的系统上,还需要在/etc/hosts中127.0.0.1所在行增加上述两个域名。
以下命令需要服务器的root权限,首先使用apt安装postfix:
apt-get update
apt-get install postfix
安装时,一个参考的配置项如下:
General type of mail configuration: Internet Site
System mail name: lab.lan
Root and postmaster mail recipient: (留空)
Other destinations to accept mail for: (增加)lab.lan mail.lab.lan
Force synchronous updates on mail queue? No
Local networks: (增加)192.168.1.0/24
Mailbox size limit (bytes): 0(0表示无限制)
Local address extension character: +
Internet protocols to use: all
如果系统已经装过postfix,也可以使用dpkg-reconfigure postfix重新配置,或手动修改postfix的配置文件。
之后,使用任意编辑器编辑/etc/postfix/main.cf文件,主要检查和修改以下几项:
mydomain = lab.lan
myhostname = mail.lab.lan
myorigin = $mydomain
home_mailbox = MailBox/
其中,home_mailbox所在行表示将收到的邮件存放到相应用户的home目录的MailBox文件夹内。
重启postfix服务使配置生效:
service postfix restart
此时,使用netstat -altn命令应该可以看到:25端口被使用。
随后安装dovecot,为了支持pop3和imap,需要安装相应的软件包,即:
apt-get install dovecot-core dovecot-pop3d dovecot-imapd
编辑/etc/dovecot/dovecot.conf文件,修改或新增以下2项,以启用imap和pop3,并配置受信任的网段:
protocols = imap pop3
login_trusted_networks = 192.168.1.0/24, 127.0.0.0/8
编辑/etc/dovecot/conf.d/10-auth.conf文件,取消注释并修改该行,使服务端允许纯文本认证(注意,该配置只适合局域网使用):
disable_plaintext_auth = no
编辑/etc/dovecot/conf.d/10-mail.conf文件,取消注释并修改该行,使dovecot识别存放在用户目录的邮箱文件夹:
mail_location = maildir:~/MailBox
编辑/etc/dovecot/conf.d/10-master.conf文件,修改以下项配置认证方式:
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
之后重启dovecot服务使配置生效:
service dovecot restart
此时,使用netstat -altn应该能看到:110和:143端口被使用了。
增加用户
可直接使用Linux用户名和密钥以增加邮箱用户。例如,增加user1的命令如下:
useradd -m user1
passwd user1
其中,useradd命令中-m参数表示创建用户的home目录,用于保存用户的邮件。passwd命令用于设置该用户的密码。如果需要禁止该用户通过ssh登录,可以修改/etc/passwd文件,将该用户所在行的/bin/sh修改为/bin/nologin。
如需为某个用户增加别名,可以修改/etc/aliases文件(也可以用其他alias文件,在postfix的配置文件中修改alias_maps和alias_database所在行即可),例如要给用户user1增加一个useradmin的别名,则在该文件中增加如下行:
useradmin: user1
之后,使用newaliases命令更新别名列表。这样,发往useradmin@lab.lan的邮件将实际发往user1@lab.lan
使用sendemail命令发送邮件
在Debian系统中使用sendemail命令可以方便地实现邮件发送功能,并容易集成到自动化脚本中。使用apt可以直接安装该命令行工具。
apt-get install sendemail
邮件内容可以是纯文本,也可以是html。例子如下:
sendemail -f user1@lab.lan -t user2@lab.lan -u "The Title of This E-mail" -m "This is a test of the sendemail command.\nThe time is $(date '+%D @ %T').\n" -s lab.lan:25 -o tls=no -o message-content-type=text
sendemail -f user1@lab.lan -t user2@lab.lan -u "Email from user1" -m "<html><head><meta charset=\"utf-8\"><title>HTML TITLE</title></head><body><h1>HTML Body Title</h1><p>Html paragraph</p></body></html>" -s lab.lan:25 -o tls=no -o message-content-type=html -o message-charset=utf8
其中,-f参数后为发件人,-t参数后为收件人,-u参数为邮件标题,-m参数为邮件内容,-s参数为smtp服务器地址,-o参数为各种选项。
详细的用法可以通过sendemail -h命令查看。
邮箱客户端
该服务器理论上兼容各种支持pop3和imap的客户端。由于没有配置证书,在设置服务器时,需要关闭SSL/TLS,或信任服务端的本地证书。
实测iOS系统中,系统自带的邮件APP可以直接添加该邮件服务器的账号,添加过程中需要信任服务器的证书,可以正常收发邮件。MIUI的自带邮箱APP需要使用POP3添加收件服务器,并且不勾选SSL选项,添加成功后可以正常收发邮件,使用IMAP时无法正常收件(仅显示标题,无法加载邮件正文),但可以正常发件。Windows和Linux平台使用Thunderbird可以直接添加该邮件服务器的账号,添加过程同样需要信任服务器的证书。