用smtpd+dovecot配置一个基本的邮件服务器
发表于 : 2015-08-29 17:26
我用的是OpenBSD 5.8-current (20150829 snapshot).
这个配置可以实现以下功能(可以认为是适用于个人的一个简单邮件服务器):
1. 接收发往某一个特定域名的邮件(本例为keda.io)
2. 邮件用户可以通过使用客户端以imaps协议访问自己的邮件
3. 邮件用户可以通过使用客户端以加密的SMTP协议通过本服务器发送邮件(端口为587,submission)
4. 在本机上接收并转发任何外发邮件
5. 这个配置中邮件用户既是系统用户,邮件存储在/var/mail/用户名 目录下
不包括以下功能:
1. 防垃圾邮件以及病毒扫描
2. 虚拟用户或虚拟域名支持
配置文件:
/etc/mail/smtpd.conf:
/etc/dovecot/dovecot.conf:
其他一些必要的工作:
1. 安装软件(smtpd为自带)
2. 生成自签署密钥和证书,用于SMTPD和Dovecot:
根据自己的需要命名密钥和证书,以及证书的有效期。后一个命令需要回答一个证书相关信息的问题。
另:由于证书是我们自己签署的,因此在配置客户端时要让其接受任何证书。
创建完成后把密钥和证书文件的权限改为600:
3. 为用户创建邮件存储目录:
我把邮件统一放在/var/mail目录下。可更具自己需要调整。以帐户名acheng为例:
4. 将下面几行添加到/etc/login.conf文件,提升dovecot进程的资源使用限额:
然后运行命令:
5. 设置dovecot随机器启动:
6. 将下面一行加入到/etc/pf.conf,让防火墙允许相关端口的流量通过:
7. 将我们选定的邮件服务器名称(可与hostname不同)写入/etc/mail/mailname文件
现在可以重启相关的程序来测试一下了
这个配置可以实现以下功能(可以认为是适用于个人的一个简单邮件服务器):
1. 接收发往某一个特定域名的邮件(本例为keda.io)
2. 邮件用户可以通过使用客户端以imaps协议访问自己的邮件
3. 邮件用户可以通过使用客户端以加密的SMTP协议通过本服务器发送邮件(端口为587,submission)
4. 在本机上接收并转发任何外发邮件
5. 这个配置中邮件用户既是系统用户,邮件存储在/var/mail/用户名 目录下
不包括以下功能:
1. 防垃圾邮件以及病毒扫描
2. 虚拟用户或虚拟域名支持
配置文件:
/etc/mail/smtpd.conf:
代码: 全选
pki violet.keda.io key "/etc/ssl/private/violet.keda.io.key"
pki violet.keda.io certificate "/etc/ssl/violet.keda.io.crt"
listen on localhost
listen on egress tls pki violet.keda.io auth-optional
listen on egress port submission tls-require pki violet.keda.io auth
table aliases file:/etc/mail/aliases
table secrets file:/etc/mail/secrets
accept for local alias <aliases> deliver to maildir "/var/mail/%{user.username}/"
accept from any for domain keda.io alias <aliases> deliver to maildir "/var/mail/%{user.username}/"
accept for any relay
代码: 全选
listen = *
protocols = "imap"
ssl = required
mail_location = maildir:/var/mail/%u
first_valid_uid = 1000
mbox_write_locks = fcntl
mmap_disable = yes
auth_mechanisms = plain
passdb {
driver = bsdauth
}
ssl_cert = </etc/ssl/violet.keda.io.crt
ssl_key = </etc/ssl/private/violet.keda.io.key
userdb {
driver = passwd
}
1. 安装软件(smtpd为自带)
代码: 全选
pkg_add -v dovecot
代码: 全选
openssl genrsa -out /etc/ssl/private/violet.keda.io.key 4096
openssl req -new -x509 -key /etc/ssl/private/violet.keda.io.key -out /etc/ssl/violet.keda.io.crt -days 365
另:由于证书是我们自己签署的,因此在配置客户端时要让其接受任何证书。
创建完成后把密钥和证书文件的权限改为600:
代码: 全选
chmod 600 /etc/ssl/private/violet.keda.io.key
chmod 600 /etc/ssl/violet.keda.io.crt
我把邮件统一放在/var/mail目录下。可更具自己需要调整。以帐户名acheng为例:
代码: 全选
mkdir /var/mail/acheng
chown -R acheng:acheng /var/mail/acheng
代码: 全选
dovecot:\
:openfiles-cur=512:\
:openfiles-max=2048:\
:tc=daemon:
代码: 全选
cap_mkdb /etc/login.conf
代码: 全选
rcctl set dovecot status on
6. 将下面一行加入到/etc/pf.conf,让防火墙允许相关端口的流量通过:
代码: 全选
pass in on egress proto tcp from any to any port {smtp, smtps, imaps, imap, submission}
代码: 全选
echo "violet.keda.io" > /etc/mail/mailname
代码: 全选
pfctl -f /etc/pf.conf
rcctl restart smtpd
rcctl restart dovecot