服务器系统为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可以直接添加该邮件服务器的账号,添加过程同样需要信任服务器的证书。

标签: Linux, Debian

添加新评论