同福

使用Postfix+SASL搭建SMTP邮件服务器【20210911】

介绍

介绍

福哥在使用docker-compose搭建邮箱服务器的时候发现sendmail需要依赖的服务非常多,势必需要用到privileged权限,而福哥非常不想在这样的服务里面分配这么高的权限,那么怎么办呢?

后来经过一番研究,发现了postfix这个小可爱,它真的很简单,真的很好用,比起sendmail来说配置起来舒服太多了!配合着dovecot服务,就可以轻松搭建邮箱服务器了!

安装

安装

直接通过yum安装即可。

yum -y install postfix cyrus-sasl cyrus-sasl-plain rsyslog

基本配置

postfix是一个实现SMTP服务的软件,相比较sendmail它更加的软件,配置起来也方便,非常的好用~~

配置文件

配置文件是/etc/postfix/main.cf,里面有一些默认参数。

参数预览

使用postconf -n查看配置文件main.cf当前的配置参数。

home/topic/2021/0816/17/ff94ba76c8ee492214ebcc32e69178cc.png

myhostname

设置为邮箱服务器的域名。

myhostname = mail.test.tongfu.net

mydomain

设置为邮箱域名。

mydomain = test.tongfu.net

myorigin

设置为邮箱域名,这里可以使用mydomain的设置。

myorigin = $mydomain

inet_interfaces

设置服务器使用所有网络,否则只能本机连接25端口。

inet_interfaces = all

重启

重启postfix之后,可以通过telnet测试SMTP服务是否正常。

systemctl restart postfix

测试

福哥使用telnet验证了postfix的SMTP服务,因为福哥没有配置认证部分,所以发邮件是不需要用户名/密码的。

home/topic/2021/0912/18/3916c3af1e3d064b649ab8e922f56c37.png

SASL认证

默认情况下使用postfix发送电子邮件是不需要认证的,这个内部系统调用还好,如果是当作用户邮箱使用就不合适了!

postfix的认证方式和sendmail一样,也是利用SASL实现的。

启动SASL

打开/etc/postfix/main.cf,增加如下两行配置。

smtpd_sasl_path = smtpd
smtpd_sasl_auth_enable = yes

客户端支持

默认情况下我们是无法使用巨婴的Outlook去连接postfix的,如果要支持这些邮件客户端的话,需要在/etc/postfix/main.cf里面设置一下。

broken_sasl_auth_clients = yes

禁止匿名

默认情况下postfix是允许匿名方式发送邮件的,我们需要在/etc/postfix/main.cf里关闭一下。

smtpd_sasl_security_options = noanonymous

虽然关闭了匿名发送邮件,但是依然可以不用认证就发送邮件,这个有点迷惑~~

寄信限制

默认情况下是可以通过匿名方式发送邮件的,我们需要在/etc/postfix/main.cf里面设置一下。

smtpd_recipient_restrictions = permit_sasl_authenticated, reject

这段的意思是,通过sasl认证的可以,其他拒绝。

认证方式

默认情况下SASL是使用PAM作为认证方式的,福哥打算使用Linux本地用户作为认证源。

通过下面的命令可以查看可用的认证方式:

saslauthd -v

home/topic/2021/0912/19/537710a1fefc754fd9f4fb7246194cae.png

打开/etc/sysconfig/saslauthd,将MECH设置为shadow,也就是使用本地用户来认证。

MECH=shadow

home/topic/2021/0818/10/ff25c7f2362c454def8bac8106d36a90.png

重启

使用下面的命令重启postfix和saslauthd两个服务。

systemctl restart saslauthd
systemctl restart postfix

创建用户

我们创建test这个用户,设置密码为123456。

useradd test
passwd test

测试

福哥还是使用telnet测试postfix的服务,因为开启了认证,这里需要使用auth login登录之后才能发送邮件了。

home/topic/2021/0912/19/031d49aa8979001446a75c5aea3c69da.png

总结

今天福哥带着童鞋们学习了使用Postfix+SASL搭建SMTP服务器的技巧。通常情况下,一个系统需要向外发送电子邮件的话,使用Postfix+SASL就足够了。

如果我们是搭建一个可以发送邮件,又可以接收邮件的全功能邮件服务器,应该怎么做呢?

下一课,福哥会带着童鞋们通过Dovecot+SASL来搭建POP服务器,使用POP服务器就可以实现接收邮件的目的了!