Debian+Postfix-SASL认证配置全解

目录
1 所需套件
2 Mail Relay
简介
3
Postfix 支援 Cyrus-SASL? V2 认证:( Debian Sarge
4
检测方式

所需套件
postfix-tls sasl2-bin libsasl2-modules
apt-get install  postfix-tls sasl2-bin libsasl2-modules

Mail Relay
简介
所谓的 Mail Relay ,指的就是 Mail Server 会不会替使用者将信转寄到外部去。

比如说,我将信寄给 tetralet@pchome.com.tw ,如果 tetralet@pchome.com.tw 这个信箱并不是位于本机上,那么这封信将会转给 PCHome Mail Server ,而这个将邮件转寄的动作就是 Mail Relay

Open Relay
就是不设限地完全开放 Mail Relay 的功能,它会替所有的人进行邮件转寄。

架设 Mail Server 的第一件事,就是防止不速之客利用您的 Mail Server 来乱发邮件,也就是关掉 Open Relay 这个功能。(基本上,几乎所有的 Mail Server 预设上都已把 Open Relay 给关掉了)取而代之的,是使用 SMTP 认证 (SMTP AUTH) 来验证使用者可否进行 Mail Relay

在这里所要介绍的,是如何使用 Cyrus-SASL? V2 来实作 SMTP 认证的功能。其中的 SASL (Simple Authentication and Security Layer) 就是用来提供符合 RFC 2222 标准的各种认证机制的 Daemon

Postfix 支援 Cyrus-SASL? V2 认证:( Debian Sarge
修改 /etc/default/saslauthd ,设定 START=yes
# This needs to be uncommented before saslauthd will be run automatically
START=yes

# You must specify the authentication mechanisms you wish to use.
# This defaults to "pam" for PAM support, but may also include
# "shadow" or "sasldb", like this:
# MECHANISMS="pam shadow"

MECHANISMS="pam"
修改 /etc/postfix/sasl/smtpd.conf ,设定 PostFix 使用 Saslauthd
mkdir -p /etc/postfix/sasl
echo "pwcheck_method: saslauthd" > /etc/postfix/sasl/smtpd.conf
postfix 加入 sasl 群组中
addgroup postfix sasl
修改 /etc/postfix/main.cf ,使其使用 SMTP AUTH SASL Authenticate
(上略)

# Enable SASL Auth

#
设定 Postfix 使用 SASL 认证。
smtpd_sasl_auth_enable = yes

#
设定 SASL 支持非标准 E-mail Client 的认证动作。
broken_sasl_auth_clients = yes

#
不使用 ANONYMOUS 这个认证。
smtpd_sasl_security_options = noanonymous

#
设定 SASL 的认证方法
# permit_sasl_authenticated
如果客户端可通过 SASL 认证则可 Relay Mail
# permit_mynetworks
如果客户端的地址为 $mynetworks 则可 Relay Mail
# check_relay_domains
# reject_unauth_destination
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains, reject_unauth_destination

smtpd_client_restrictions = permit_sasl_authenticated
修改 /etc/postfix/master.cf ,让 Postfix 不要以 chroot 启动。
后面的 -v 参数可以用来 Debug ,但正式上线时最好拿掉,以免系统被 Log 塞爆了。
(上略)

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd -v

(下略)
或者是新增一个 listen smtps (port 465) 上的 service

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtps     inet  n       -       n       -       -       smtpd                                                     
        # 强迫 tls 联机 (?)
        -o smtpd_tls_wrappermode=yes
        # 使用 sasl auth ( 如果在 main.cf 已经设定了,这行可以省略 )
        -o smtpd_sasl_auth_enable=yes
        # 所有联机到这里的都必须通过 sasl auth
        -o smtpd_client_restrictions=permit_sasl_authenticated,reject                                             
重新启动 SASL Daemon
/etc/init.d/saslauthd restart
跑起来后,可以用

testsaslauthd -u username -p password
来测试 saslauthd 是否有正常运作

重新启动 Postfix
/etc/init.d/postfix restart
[ 编辑 ] 检测方式
首先把账号及密码转换成 base64 的编码:(可能需要安装 libmime-base64-perl 套件)

perl -MMIME::Base64 -e 'print encode_base64("/0username/0password");'
登入 Postfix

$ telnet 127.0.0.1 25 (在该用户的环境变量下)
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 Virtual ESMTP Postfix (Debian/GNU)
EHLO qemu ( 这里要输入的是 HostName)
250-Virtual
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-XVERP
250 8BITMIME
auth plain AHXXXXXXXXXXXXXXXXXXXX8/ ( 刚才 perl 指令计算的结果 )
235 Authentication successful
quit
221 Bye
Connection closed by foreign host.
如果认证成功即表示 SASL 已经正确启动了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker Desktop是一个用于在Windows和Mac上运行Docker的应用程序。它提供了一个用户友好的界面,可以轻松地管理和运行Docker容器。WSL(Windows Subsystem for Linux)是Windows 10中的一个功能,它允许用户在Windows上运行Linux发行版。 如果在安装Docker Desktop时遇到了"docker+desktop-unexpected+wsl"错误,可能是由于WSL未正确配置或启用所致。以下是解决此问题的步骤: 1. 确保已安装WSL:在Windows 10上,打开PowerShell或命令提示符,并运行以下命令来检查WSL是否已安装: ```shell wsl --list --verbose ``` 如果没有任何输出或显示"WSL 2 is not installed",则需要安装WSL。可以按照Microsoft的官方文档进行安装:https://docs.microsoft.com/en-us/windows/wsl/install-win10 2. 启用WSL 2:在安装WSL后,需要将WSL 2设置为默认版本。打开PowerShell或命令提示符,并运行以下命令: ```shell wsl --set-default-version 2 ``` 3. 安装Linux发行版:在WSL 2中运行Docker需要安装一个Linux发行版。可以从Microsoft Store中选择一个喜欢的发行版,例如Ubuntu、Debian等。打开Microsoft Store,搜索并安装所选的发行版。 4. 配置Docker Desktop:打开Docker Desktop应用程序,转到设置(Settings)-> WSL Integration。确保已启用所需的Linux发行版,并将其与Docker Desktop关联起来。 完成上述步骤后,应该能够成功安装和运行Docker Desktop,并在WSL 2中使用Docker。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值