当前位置:首页 > 技术文章 > centos > postfix+saslauthd安装步骤
postfix+saslauthd安装步骤
文章来源:本站原创  浏览次数:5011  发布日期:2013-04-23

前言:系统环境cengos6.4。我的是最小化安装的,默认已经带了postfix和saslauthd。

但是这个cyrus-sasl-plain没有,还是需要安装的。我是在vmware虚拟机上测试的。所以要先做一些准备工作,至于centos的最小化安装这里就不讨论了。

(1)修改IP地址:

vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
NAME="System etho"
IPADDR=192.168.3.58
GATEWAY=192.168.3.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
USERCTL=no

(2)确定系统主机名, hostname 可以查出

设置主机名:

vi /etc/sysconfig/network
HOSTNAME=mail.test.com

(3)设置指定的域名解析地址

vi /etc/hosts
192.168.3.58 mail.test.com
service network restart

准备工作完成之后开始下面的配置:

1、修改MX记录到指定IP

2、开放25端口

vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
service iptables restart

3、安装postfix

yum -y install postfix

编辑配置文件:

vi /etc/postfix/main.cf

找到相应的参数并修改

myhostname = mail.test.com  ← 邮箱域名
mydomain = test.com  ← 根域名
myorigin = $mydomain   ← 指明发件人所在的域名
inet_interfaces = all  ← 指定postfix系统监听的网络接口
mynetworks_style = class  
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relay_domains = $mydestination
mynetworks = 192.168.3.58  ← 指定你所在的网络的网络地址
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknow

在文件末尾添加:

smtpd_sasl_auth_enable = yes    ← 服务器使用SMTP认证 ,启用sasl验证
smtpd_sasl_local_domain = $myhostname  ← 指定SMTP认证的本地域名(主机名)
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_client_restrictions = permit_sasl_authenticated
broken_sasl_auth_clients = yes ←  容许接收不守规定的行为
smtpd_sasl_path = smtpd  
smtpd_sasl_security_options = noanonymous   ← 不允许匿名的方式认证
smtpd_sasl_authenticated_header = yes   ← 从头信息查找用户名
message_size_limit = 15728640  ← 规定邮件最大尺寸为15MB

配置好之后,退出,保存

service postfix start  启动
chkconfig  postfix on    开机启动

4、安装 cyrus-sasl

yum -y install cyrus-sasl
yum -y install cyrus-sasl-plain

  编辑SMTP认证的配置文件  没有则新建 32位的机器路径是/usr/lib/sasl2/smtpd.conf

  使用sasldb来进行认证。这里介绍2种认证方式,saslauthd和auxprop,一个是使用系统的账号来做认证,一个使用外部的账户来做认证,对于安全性来说,当然是使用外部的账号更安全了,这里介绍的使用sasldb2数据库,mysql的方式暂不介绍。2种方式人选其一即可。

saslauthd的配置方式:

vi /usr/lib64/sasl2/smtpd.conf ← 编辑SMTP认证的配置文件  没有则新建
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
  
vi /etc/sysconfig/saslauthd
MECH=shadow
FLAGS=

auxprop的配置方式:

vi /usr/lib64/sasl2/smtpd.conf
   pwcheck_method: auxprop
   auxprop_plugin: sasldb
   mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
  
vi /etc/sysconfig/saslauthd
#MECH=
FLAGS=sasldb
service saslauthd start  启动
chkconfig  saslauthd on    开机启动
mkdir /etc/skel/Maildir     在用户模板下建立用户邮箱目录
chmod 700 /etc/skel/Maildir   设置用户邮箱目录属性为700

到这里,基本就配置好了。

5、添加邮箱账号,只有选择auxprop的方式的时候,这里才需要设置

saslpasswd2 -c -u 'test.com' test     执行之后输入2次密码就可以了
sasldblistusers2 查看添加的用户
saslpasswd2 -d "test@test.com"  删除用户

然后再把重新生成/etc/sasldb2赐予640权限就ok了。

chown postfix /etc/sasldb2   ← 将数据库用户改为postfix
chown :postfix /etc/sasldb2  ← 将数据库用户组改为postfix
chmod 640 /etc/sasldb2       ← 将数据库属性改为640

6、使用telnet进行测试

 没有telnet的话,需要安装

yum -y install telnet

测试之前先把编码后的账号和密码记录下来。

perl -e "use MIME::Base64;print encode_base64('test@test.com')"生成编码后的账号
dGVzdEB0ZXN0LmNvbQ==
perl -e "use MIME::Base64;print encode_base64('123456')" 生成编码后的密码
MTIzNDU2
telnet 192.168.3.58 25

如果正确的话可以看到如下窗口

ehlo demo.domain.tld    << 输入内容

auth login     << 输入内容
  dGVzdEB0ZXN0LmNvbQ==     << 输入内容
MTIzNDU2     << 输入内容

如果验证通过了,能看到如下信息:

235 2.7.0 Authentication successful

7、使用foxmail进行测试

(1)新建账号

(2)输入密码

(3)配置smtp服务器地址

(4)测试账号,点击测试按钮,如果失败,会弹出输入密码的对话框,很可能是账号或者密码错误了。

(5)发送信息到邮箱,使用163邮箱测试,接收比较快。QQ邮箱很可能会收不到。

这个是已发送的邮件。

看看163有没有收到

相关说明:

在不确定是什么问题的时候可以关闭防火墙和selinux

chkconfigiptables off 关闭防火墙

selinux下面随便执行一条就可以了

setenforce0           关闭selinux

修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器

setsebool-P allow_saslauthd_read_shadow 1      让sellinux允许saslauthd能都读取shadow的内容

对于selinux的操作任选一种就行了。

postfixreload 重写加载,不用重启,如果修改了inet_intcrfaccs,需要重启

限制转发访问:IP认证

mynetworks_style= host    服务器主机使用转发服务

mynetworks_style= class   让任何与服务器处于同一级IP网络的主机可以使用转发

mynetworks_style= subnet

mynetworks= 192.168.3.0/58   只能那些主机可以使用转发服务。这个参数优先级高于 mynetworks_style

查看侦听端口

netstat-tlnup | grep 25

postfix系统日志文件位于“/var/log/maillog”

centos输入mail命令之后, Ctrl+D 可以退出

清空文件内容命令: echo "">/var/log/maillog

find/ -name smtpd.conf  查找文件

相关问题:

[root@localhost~]# telnet localhost 25

Trying127.0.0.1...

Connectedto localhost.localdomain (127.0.0.1).

Escapecharacter is '^]'.

Connectionclosed by foreign host.

登录不上,很快就关闭了链接,确认cyrus-sasl-plain是否已经安装。

确认/etc/sasldb2的权限和所有者是否更改。

获得用户名BASE64编码的问题:

perl-e "use MIME::Base64;print encode_base64('user123@test.com')"

这样执行是对,双引号在外面,单引号在里面。

如果反过来就不对了。因为里面有@符号,如果没有的话就没事。

vi参数设置,最常犯的一种错误,是将注释与参数放在同一行,参数值加引号。

原文来自:postfix+saslauthd安装步骤 http://www.redyun.net/technology/99.html

红云案例Case