重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍“怎么在postfix服务器上配置SASL认证”,在日常操作中,相信很多人在怎么在postfix服务器上配置SASL认证问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在postfix服务器上配置SASL认证”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
成都创新互联公司致力于成都做网站、成都网站设计,成都网站设计,集团网站建设等服务标准化,推过标准化降低中小企业的建站的成本,并持续提升建站的定制化服务水平进行质量交付,让企业网站从市场竞争中脱颖而出。 选择成都创新互联公司,就选择了安全、稳定、美观的网站建设服务!
简介:如果客户端与postfix没有处在同一个网络,则需要通过SASL机制进行认证授权,授权后客户端就可以与处在同一网络的客户端一样拥有相同的权限了。postfix本身并不实现 SASL,而是采用一个第三方的实现来作为postfix的一个模块,所以sasl相关的配置有些是属于postfix,有些属于第三方模块。
在postfix服务器上配置SASL认证的步骤:
sasl实现可以提供一系列认证机制,通过配置来选择使用哪些认证方式。
配置postfix启用sasl认证并授权客户端发送邮件或者控制信封上的发件人地址。
postfix通过插件的方式来支持多种不同的sasl实现,比如:Cyrus SASL and Dovecot SASL,可以通过以下命令来查看当前哪些实现编译进了postfix:
% postconf -a (SASL support in the SMTP server) % postconf -A (SASL support in the SMTP+LMTP client)
配置Dovecot SASL:
1 conf.d/10-master.conf: 2 service auth { 3 ... 4 unix_listener /var/spool/postfix/private/auth { 5 mode = 0660 6 # Assuming the default Postfix user and group 7 user = postfix 8 group = postfix 9 } 10 ... 11 } 12 13 conf.d/10-auth.conf 14 auth_mechanisms = plain login
第4行:采用unix-domain socket
第5-8行:配置了只允许postfix用户和组有读写权限
第14行:提供了plain,login两种认证机制
第一步需要确定配置文件的名称和位置,配置文件名是postfix smtp服务发送给Cyrus SASL库的值再加上.conf后缀, postfix发送的值为采用Cyrus SASL的组件名称,默认为smtpd,所以配置文件名默认为smtpd.conf:
/etc/postfix/main.cf: # Postfix 2.3 and later smtpd_sasl_path = smtpd # Postfix < 2.3 smtpd_sasl_application_name = smtpd
Cyrus SASL会搜寻配置文件的位置,具体需要看Cyrus的版本和一些postfix的发行版本身的规则。
postfix链接cyrus sasl 的库libsasl,通过调用sasl库来与cyrus通信。sasl库可以使用外部的密码校验服务或者通过内部插件连接到后端的认证服务来认证客户端:
authentication backend | password verification service / plugin |
---|---|
/etc/shadow | saslauthd |
PAM | saslauthd |
IMAP server | saslauthd |
sasldb | sasldb |
MySQL, PostgreSQL, SQLite | sql |
LDAP | ldapdb |
saslauthd:postfix通过unix-domain socket与saslauthd服务进行通信。
在postfix中启用sasl认证:
postfix默认采用Cyrus sasl实现,可以通过配置改为dovecot:
/etc/postfix/main.cf: smtpd_sasl_type = dovecot
指定dovecot的访问unix-domain socket地址:
/etc/postfix/main.cf: smtpd_sasl_path = private/auth
如果采用tcp socket通信,可以这样配置:
/etc/postfix/main.cf: smtpd_sasl_path = inet:127.0.0.1:12345
启用sasl认证:
/etc/postfix/main.cf: smtpd_sasl_auth_enable = yes
启用了sasl之后,postfix会在ehlo指令的结果中告诉客户端不前支持哪些认证机制,但是,有些比较旧的客户端不能识别这些格式,这时可以配置postfix以兼容格式重复输出一次以便让旧的客户端了能识别:
/etc/postfix/main.cf: broken_sasl_auth_clients = yes
postfix可以配置一些限制策略还允许或禁止某些sasl机制,其选项如下:
Property | Description |
---|---|
noanonymous | Don't use mechanisms that permit anonymous authentication. |
noplaintext | Don't use mechanisms that transmit unencrypted username and password information. |
nodictionary | Don't use mechanisms that are vulnerable to dictionary attacks. |
forward_secrecy | Require forward secrecy between sessions (breaking one session does not break earlier sessions). |
mutual_auth | Use only mechanisms that authenticate both the client and the server to each other. |
默认的策略配置如下:
/etc/postfix/main.cf: # Specify a list of properties separated by comma or whitespace smtpd_sasl_security_options = noanonymous
注意:至少应该配置禁止匿名认证。
加密TLS会话:
不采用tls会话时,postfix通过另一组参数来配置sasl机制,默认情况下是复制非tls会话的配置:
/etc/postfix/main.cf: smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
如果想分开配置,可以这样:
/etc/postfix/main.cf: smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous
仅仅在建立了tls会话之后才启用sasl认证:
/etc/postfix/main.cf: smtpd_tls_auth_only = yes
在客户端经过认证后,postfix会决定客户端可以被授权做哪些事情,比如:可以发送邮件给外站用户,使用特定的信封发件人作为mail from指令值,这些权限默认是不允许的。
邮件转发授权:
# With Postfix 2.10 and later, the mail relay policy is # preferably specified under smtpd_relay_restrictions. /etc/postfix/main.cf: smtpd_relay_restrictions = permit_mynetworkspermit_sasl_authenticatedreject_unauth_destination
# Older configurations combine relay control and spam control under # smtpd_recipient_restrictions. To use this example with Postfix ≥ # 2.10 specify "smtpd_relay_restrictions=". /etc/postfix/main.cf: smtpd_recipient_restrictions = permit_mynetworkspermit_sasl_authenticatedreject_unauth_destination ...other rules...
到此,关于“怎么在postfix服务器上配置SASL认证”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!