热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux安装sendmail邮件服务器

1、绑定域名(server110.com):添加A记录指向服务器IP,添加MX记录指向server110.com2、软件安装:2.1查看安装rpm-qa|grepsendmailrpm-qa|grepdovecotrpm-qa|grepcyrus2.2安装服务安装邮件服务器#yuminstallsendmailsend

1、绑定域名(server110.com):
添加A记录指向服务器IP,添加MX记录指向server110.com

2、软件安装:
2.1 查看安装
rpm -qa | grep sendmail
rpm -qa | grep dovecot
rpm -qa | grep cyrus

2.2 安装服务
安装邮件服务器
# yum install sendmail sendmail-cf
安装pop3/imap服务
# yum install dovecot
安装用户认证
# yum install cyrus-sasl
# yum install cyrus-sasl-md5
# yum install cyrus-sasl-plain
# yum install cyrus-sasl-lib
防火墙开放25(smtp)、143(imap)端口
# vi /etc/sysconfig/iptables
添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT
# service iptables restart  **重启防火墙 
关闭selinux,否则会影响saslauthd使用shadow认证;
# vi /etc/selinux/config
将SELINUX=enforce改成SELINUX=disabled
**需要重新启动计算机生效;

3、配置sendmail
进入/etc/mail
# cd /etc/mail

3.1 配置access
# vi /etc/mail/access
通常情况下,Sendmail不会为邮件服务Relay信息,这样可以防止一些有恶意的人利用别人的邮件服务器乱发邮件,所以,access保持默认配置即可
内容如下
Connect:localhost.localdomain           RELAY
Connect:localhost                       RELAY
Connect:127.0.0.1                       RELAY
当然也可针对某段IP或某个IP做修改,如要禁止某个ip发信,则可添加
    192.168.0.2   deny
保存文件后运行下面命令进行编译
    # makemap hash access.db
3.2 配置TLS(支持加密连接LLS)
首先生成sendmail.pem文件
# cd /etc/pki/tls/certs
# make sendmail.pem
Country Name (2 letter code) [GB]:ch   
State or Province Name (full name) [Berkshire]:sh
Locality Name (eg, city) [Newbury]:sh
Organization Name (eg, company) [My Company Ltd]:test.
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname)[]:server110.com
E-mail Address []:test@server110.com

3.3 配置sendmail.mc
# vi /etc/mail/sendmail.mc
添加:
define(`confAUTH_OPTIONS', `A p y')dnl
define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl
define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl
如果有,则默认被dnl注释,删除前面的dnl注释即可
取消如下两行的注释(删除开头的dnl)
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
修改SMTP的监听IP为 0.0.0.0
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
不要改
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea’)dnl
这句话!保持注释状态。
上面那句话,网上好多文章都说把Port=submission,改成Port=25,说是强制所有用户在25端口
上做认证。
我不知道sendmail以前的版本是怎么样设置smtp认证的。sendmail8.13不用这么设置,这句话
人家sendmail的意思是:取消注释后,一旦当25号端口被重定向或者被屏蔽,或者在25号端口
打不开的情况下,马上使用587备用端口给用户做认证。
本来人家sendmail就已经打开了25端口(Port=smtp了已经),你却在这里还Port=25,把备用
端口也改成25,这不是让sendmail的sm-client认
证进程和sendmail的主进程抢端口么….
生成配置(如果语法有错误是不能执行的)
# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

4、配置dovecot
# vi /etc/dovecot/dovecot.conf
找到
#protocols = imap pop3 lmtp
将之改为
protocols = imap pop3 lmtp
添加域名
# vi /etc/mail/local-host-names
添加域名如:server110.com //每个域名一行

5、配置cyrus sasl
vi /etc/sysconfig/saslauthd
将MECH=pam
改为
MECH=shadow

6、停止postfix
# service postfix stop

7、设置开机启动
# chkconfig sendmail on
# chkconfig dovecot on
# chkconfig saslauthd on

8、重启服务
# service sendmail restart
# service dovecot restart
# service saslauthd restart

9、测试SMTP验证
# useradd mailtest
# passwd mailtest //添加邮箱帐号
# vi /etc/passwd
修改bash为/sbin/nologin,这样添加的用户名就没有了shell,只能收发信而不能登录到服务器运行其他程序
测试
# saslauthd -v
看结果支不支持 pam或shadow
# testsaslauthd -u mailtest -p mailtest
如果显示0: OK “Success.”则表明saslauthd工作正常
查看sendmail队列:mailq
察看邮件系统的状态:mailstats
查看暂时存储邮件:ls -l /var/spool/mail |more
/*****************高级功能,可以不用配置
查看映射用户
# sasldblistusers2
运行 saslpasswd2 添加用户
# saslpasswd2 -u server110.com -c mailtest
# sasldblistusers2
# mailtest@server110.com: userPassword
删除用户
# saslpasswd2 -d mailtest@server110.com
注意:为什么没有设定foxmail中的smtp服务器需要验证,也可以发送E-mail?
要用OUTLOOK来测试,Foxmail似乎可以自动地进行smtp认证。OUTLOOK在smtp服务器验证失败后,有拒绝提示
工具->;帐户->;邮件->;属性->;服务器->;我的服务器要求身份验证(选上)->;设置->;(选择)登录方式->;帐户名:(用saslpasswd2建立的),密码(用saslpasswd2建立的)->;确定.
另外:接收邮件服务器的帐户名与密码应该是系统里的用户名与密码.
saslauthd -v 看结果支不支持 pam或shadow
smtp验证测试: testsaslauthd -u test -p 123456
sasldblistusers2 检查已经增加的smtp验证用户
saslpasswd2增加smtp验证用户:saslpasswd2 -u cencn.com -c test 

/******************
10、验证Sendmail 的SMTP 认证功能
telnet localhost 25 后输入ehlo localhost 验证Sendmail 的SMTP 认证功能
 [root@localhost CentOS]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.8/8.13.8; Thu, 6 Jan 2011 11:06:19 +0800
ehlo localhost
250-localhost.localdomain Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
quit
221 2.0.0 localhost.localdomain closing connection
Connection closed by foreign host.
telnet localhost 110
 [root@localhost CentOS]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.
quit
+OK Logging out
Connection closed by foreign host.


推荐阅读
author-avatar
se8529106
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有