1. 介绍
1.1 介绍
福哥在使用docker-compose搭建邮箱服务器的时候发现sendmail需要依赖的服务非常多,势必需要用到privileged权限,而福哥非常不想在这样的服务里面分配这么高的权限,那么怎么办呢?
后来经过一番研究,发现了postfix这个小可爱,它真的很简单,真的很好用,比起sendmail来说配置起来舒服太多了!配合着dovecot服务,就可以轻松搭建邮箱服务器了!
2. 安装
2.1 安装
直接通过yum安装即可。
yum -y install postfix cyrus-sasl cyrus-sasl-plain rsyslog
3. 基本配置
postfix是一个实现SMTP服务的软件,相比较sendmail它更加的软件,配置起来也方便,非常的好用~~
3.1 配置文件
配置文件是/etc/postfix/main.cf,里面有一些默认参数。
3.2 参数预览
使用postconf -n查看配置文件main.cf当前的配置参数。
3.3 myhostname
设置为邮箱服务器的域名。
myhostname = mail.test.tongfu.net
3.4 mydomain
设置为邮箱域名。
mydomain = test.tongfu.net
3.5 myorigin
设置为邮箱域名,这里可以使用mydomain的设置。
myorigin = $mydomain
3.6 inet_interfaces
设置服务器使用所有网络,否则只能本机连接25端口。
inet_interfaces = all
3.7 重启
重启postfix之后,可以通过telnet测试SMTP服务是否正常。
systemctl restart postfix
3.8 测试
福哥使用telnet验证了postfix的SMTP服务,因为福哥没有配置认证部分,所以发邮件是不需要用户名/密码的。
4. SASL认证
默认情况下使用postfix发送电子邮件是不需要认证的,这个内部系统调用还好,如果是当作用户邮箱使用就不合适了!
postfix的认证方式和sendmail一样,也是利用SASL实现的。
4.1 启动SASL
打开/etc/postfix/main.cf,增加如下两行配置。
smtpd_sasl_path = smtpdsmtpd_sasl_auth_enable = yes
4.2 客户端支持
默认情况下我们是无法使用巨婴的Outlook去连接postfix的,如果要支持这些邮件客户端的话,需要在/etc/postfix/main.cf里面设置一下。
broken_sasl_auth_clients = yes
4.3 禁止匿名
默认情况下postfix是允许匿名方式发送邮件的,我们需要在/etc/postfix/main.cf里关闭一下。
smtpd_sasl_security_options = noanonymous
虽然关闭了匿名发送邮件,但是依然可以不用认证就发送邮件,这个有点迷惑~~
4.4 寄信限制
默认情况下是可以通过匿名方式发送邮件的,我们需要在/etc/postfix/main.cf里面设置一下。
smtpd_recipient_restrictions = permit_sasl_authenticated, reject
这段的意思是,通过sasl认证的可以,其他拒绝。
4.5 认证方式
默认情况下SASL是使用PAM作为认证方式的,福哥打算使用Linux本地用户作为认证源。
通过下面的命令可以查看可用的认证方式:
saslauthd -v
打开/etc/sysconfig/saslauthd,将MECH设置为shadow,也就是使用本地用户来认证。
MECH=shadow
4.6 重启
使用下面的命令重启postfix和saslauthd两个服务。
systemctl restart saslauthdsystemctl restart postfix
4.7 创建用户
我们创建test这个用户,设置密码为123456。
useradd testpasswd test
4.8 测试
福哥还是使用telnet测试postfix的服务,因为开启了认证,这里需要使用auth login登录之后才能发送邮件了。
5. 所以
今天福哥带着童鞋们学习了使用Postfix+SASL搭建SMTP服务器的技巧。通常情况下,一个系统需要向外发送电子邮件的话,使用Postfix+SASL就足够了。
如果我们是搭建一个可以发送邮件,又可以接收邮件的全功能邮件服务器,应该怎么做呢?
下一课,福哥会带着童鞋们通过Dovecot+SASL来搭建POP服务器,使用POP服务器就可以实现接收邮件的目的了!