用smtpd+dovecot配置一个基本的邮件服务器

在OpenBSD环境下搭建各种服务器的相关讨论。

版主: lionuxchenjun天地乾坤

回复
头像
acheng
锌 Zn
帖子: 581
注册时间: 2011-07-07 21:52

用smtpd+dovecot配置一个基本的邮件服务器

帖子 acheng » 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:

代码: 全选

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
/etc/dovecot/dovecot.conf:

代码: 全选

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
2. 生成自签署密钥和证书,用于SMTPD和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 
3. 为用户创建邮件存储目录:
我把邮件统一放在/var/mail目录下。可更具自己需要调整。以帐户名acheng为例:

代码: 全选

mkdir /var/mail/acheng
chown -R acheng:acheng /var/mail/acheng
4. 将下面几行添加到/etc/login.conf文件,提升dovecot进程的资源使用限额:

代码: 全选

       dovecot:\
                :openfiles-cur=512:\
                :openfiles-max=2048:\
                :tc=daemon:
然后运行命令:

代码: 全选

cap_mkdb /etc/login.conf
5. 设置dovecot随机器启动:

代码: 全选

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}
7. 将我们选定的邮件服务器名称(可与hostname不同)写入/etc/mail/mailname文件

代码: 全选

echo "violet.keda.io" > /etc/mail/mailname
现在可以重启相关的程序来测试一下了

代码: 全选

pfctl -f /etc/pf.conf
rcctl restart smtpd
rcctl restart dovecot

回复

在线用户

正浏览此版面之用户: 没有注册用户 和 4 访客