当前位置: 主页 > 服务器技术 > Mail服务器 > postfix+extmail的mail服务器架设

postfix+extmail的mail服务器架设

时间:2009-12-9来源:腾讯科技 点击:
一 ,安装cyrus-sasl-2.1.22(Simple Authentication and Security Layer)

简单的验证和安全层,smtp发信认证。

ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.22.tar.gz
tar -zxvf cyrus-sasl-2.1.22.tar.gz
./configure --prefix=/usr/local/sasl2
--disable-gssapi
--disable-anon
--disable-sample
--disable-digest
--enable-plain
--enable-login
--enable-sql
--with-mysql=/usr/local/mysql
--with-mysql-includes=/usr/local/mysql/include/mysql
--with-mysql-libs=/usr/local/mysql/lib/mysql
--with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
make
make install


rm /usr/lib/libsasl

关闭原有的sasl链接新的(重要):
mv /usr/lib/libsasl2.a   /usr/lib/libsasl2.a.OFF
mv /usr/lib/libsasl2.la   /usr/lib/libsasl2.la.OFF
mv /usr/lib/libsasl2.so.2.0.19   /usr/lib/libsasl2.so.2.0.19.OFF
mv /usr/lib/sasl2   /usr/lib/sasl2.OFF

rm /usr/lib/libsasl2.so
rm /usr/lib/libsasl2.so.2
ln -sv /usr/local/sasl2/lib/*   /usr/lib


postfix 2.3以后的版本会分别在/usr/local/lib和/usr/local/include中
搜索sasl库文件及头文件,故还须将其链接至此目录中:
ln -sv /usr/local/sasl2/lib/*   /usr/local/lib
ln -sv /usr/local/sasl2/include/sasl/*   /usr/local/include


创建运行时需要的目录并调试启动
mkdir -pv /var/state/saslauthd
/usr/local/sasl2/sbin/saslauthd -v //看看版本是不是2.1.22    
/usr/local/sasl2/sbin/saslauthd -a shadow pam -d //正常不会报错

启动并测试
/usr/local/sasl2/sbin/saslauthd -a shadow pam
/usr/local/sasl2/sbin/testsaslauthd -u root -p password //正常显示0: OK "Success"成功

配置库文件搜索路径,让postfix能找到sasl:
echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
ldconfig -v
ldconfig -v | grep sasl2 //看看有没有什么错误

加入开机自启动:
echo "/usr/local/sasl2/sbin/saslauthd -a shadow pam" >> /etc/rc.local

错误FAQ:
1,authentication mechanisms: getpwent pam rimap shadow

    echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
    echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
    ldconfig -v

-----------------------------------------------------------------------

二,安装postfix-2.4.5:(Mail Transport agent(MTA)邮件传输代理)

http://www.postfix.org
ftp://ftp.cuhk.edu.hk/pub/packages/mail-server/postfix/index.html

下载:postfix-2.4.5.tar.gz源码包

rpm -e sendmail --nodeps //删除sendmail

//添加postfix用户组和帐号

groupadd -g 2525 postfix
useradd -u 2525 -g postfix -s /sbin/nologin -d /dev/null postfix
groupadd -g 2526 postdrop
useradd -g postdrop -u 2526 -s /bin/false postdrop

tar -zxvf postfix-2.4.5.tar.gz

配置postfix编译参数支持sasl,mysql验证:

make -f Makefile.init Makefiles \
‘CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl‘ \
‘AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib   -lsasl2‘
(这里要注‘‘这间要有一个空格)
make
make install

安装最后的选项:
install_root:[/]   (默认)
tempdir:[/home/postfix-2.4.5] /tmp
config_directory: [/etc/postfix] (默认)
daemon_directory:[/usr/libexec/postfix] /usr/local/postfix/libexec
command_directory:[/usr/sbin] /usr/local/postfix/sbin
queue_directory:[/var/spool/postfix] (默认)
sendmail_path: [/usr/sbin/sendmail] (默认)
newaliases_path: [/usr/bin/newaliases] (默认)
mailq_path: [/usr/bin/mailq] (默认)
mail_owner: [postfix] (默认)
setgid_group: [postdrop]   (默认)
html_directory: [no] (默认)
manpages: [/usr/local/man] /usr/local/postfix/man (默认)   
readme_directory: [no]

编译postfix错误FAQ:
cannot find -lmysqlclient
严格检查输入是否有误:),‘AUXLIBS前面要有空格,或是把mysql库加入搜索路径:
echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf
ldconfig

最后:
生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:
/usr/bin/newaliases

检验postfix是否支持sasl认证,如果输出为以下结果,则支持:
/usr/local/postfix/sbin/postconf   -a
cyrus
dovecot
/usr/local/postfix/sbin/postconf -m | grep mysql
mysql

没有的话需重新编译postfix。
------------------------------------------------------------
启动错误FAQ:

1,postsuper: fatal: scan_dir_push: open directory defer:Permission denied
postfix/postfix-script: fatal: Postfix integrity check failed!

进入postfix-2.4.5源码目录重新make install一遍即可

----------------------------------------------------------------------
三,配置基本postfix:


修改main.cf配置文件:
vi /etc/postfix/main.cf

myhostname = mail.upkiller.com     //主机名称
mydomain = upkiller.com      //域名
myorigin = $mydomain            //组织名称,邮件标头上面的 mail from 的那个地址
inet_interface = all       //监听的网卡接口
mydestination = $myhostname,localhost.$mydomain,localhost,$mydomain //指定postfix系统要接收到哪个域名的邮件
mynetworks = 127.0.0.0/8           //允许不使用smtp发信认证的网段

配置main.cf说明:

1,参数行和注释行是不能处在同一行中,参数不要加引号,=号两边的空格可有可无
2,被引用的参数并不一定要先定义,即顺序颠倒也无所谓。
3,如果参数同时拥有一个以上的值,参数之间可以用逗号,空格|tab,或换行字符隔开。
4,如果参数太多无法放同一行,可以将它们放在不同的行中,只需要在每行前多置一个
    tab|空格即可;postfix会把第一个字符为(空格|tab)的行视为前一行的延续。
5,修改后立即生效,重载配置postfix reload,最好可以postfix stop;postfix start

启动postfix测试:

/usr/local/postfix/sbin/postfix check   //检查postfix的完整性(没有消息就是good)
/usr/local/postfix/sbin/postfix start
netstat -tnl | grep :25

建立收信测试帐号:
adduser upkiller
passwd upkiller

发信测试:
nc localhost 25
ehlo mail.upkiller.com
250-mail.upkiller.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:root@upkiller.com
rcpt to:upkiller@upkiller.com
data
subject:Postfix mail test!
postfix test!
.
quit
开启另一tty用upkiller登陆:
mail
"/var/spool/mail/upkiller": 1 message 1new
>N 1 root@upkiller.com Thu Seq 20 05:12 15/547 "Postfix mail test!"

cat /var/spool/mail/upkiller //储存upkiller用户的mail文件
测试成功。

---------------------------------------------------------------------
四,开启cyrus-sasl认证功能:

vi main.cf

#====================SASL========================  
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_unknown_sender_domain,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
reject_unauth_destination,
permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $domain
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)


#编辑smtpd.conf
vi /usr/local/lib/sasl2/smtpd.conf

内容:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

重新启动postfix:
/usr/local/postfix/sbin/postfix stop
/usr/local/postfix/sbin/postfix start

测试:
adduser upkiller
passwd upkiller

//取base64编码
perl -MMIME::Base64 -e ‘print encode_base64("upkiller")‘
dxBraWxsZXI=

nc localhost 25

220 mail.upkiller.com ESMTP Postfix (2.4.5)
ehlo mail.upkiller.com
250-mail.upkiller.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN (看见这二行即成功)
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
dXBraWxsZXI=
334 VXNlcm5hbWU6
dXBraWxsZXI=
235 2.0.0 Authentication successful
mail from:root@upkiller.com
rcpt to:upkiller@upkiller.com
data
subject:smtp authentication test!
test ok
.
quit


错误FAQ:

tail -f /var/log/maillog

1,fatal: SASL per-connection initialization failed
warning: /usr/local/libexec/postfix/smtpd: bad command startup
解决方法:
sasl2没装好,和旧的冲突,重新安装sasl2把sasl2装在/usr/local/sasl2下再关闭旧的
文件,连接新的,确保系统能找到的include和lib文件都是新编的,
再重编译postfix即可

2,NIS domain name not set NIS lookups disabled
提示没有启动NIS
alias_maps = $alias_database
强制postfix只使用本地的aliases资料库。

 

站长资讯网
.
分页: [1] [2] [3]
TAG: postfix extamil

查看[postfix+extmail的mail服务器架设]所有评论
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 网站留言