热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

REDHAT系统中设置配置sendmail和smtp服务

一:本文目的利用RedHat7.1中的默认配置方便地设置一台利用SASL库进行用户名和密码认证的SMTP服务器,以允许外面的用户以用户名和密码认证来relay邮件。二:网络系统公司域名:domain.com用来认证的SMTP服务器全称域名:smtp.domain.com三:为什么要这样
一: 本文目的
利用RedHat 7.1中的默认配置方便地设置一台利用SASL库进行用户名和密码认证的SMTP服务器,以允许外面的用户以用户名和密码认证来relay邮件。

二: 网络系统 公司域名 : domain.com
用来认证的SMTP服务器全称域名: smtp.domain.com

三: 为什么要这样用?
假设上面的公司有专线接入Internet, 且在其它城市有多个分支机构,公司有统一的域名domain.com,
所有员工的邮件地址类似如staffname@domain.com。但是分支机构大多数没有专线接入,用ISDN或者普通拨号方式入网,并且越来越多的ISP不允许以非ISP的邮件地址域名后缀发送邮件,即使你是他们的拨号用户。
还有一种情况是移动用户,经常地,公司派遣用户在外出差旅行期间,用户需要发送邮件,则也同样需要一种认证方案去允许正确的用户relay邮件。
现在我们考虑做公司自己内部的邮件relay系统。
就是设置一台SMTP服务器在防火墙之外,安装Redhat 7.1,选择‘服务器系统’方式安装所有需要的包,然后设置Sendmail,配置一台基于SASL的用户名和密码认证的邮件服务器,以relay自己公司的员工的邮件。

四: 配置Sendmail
1. 选择‘服务器系统’安装Redhat 7.1
2. 进入目录 /usr/share/sendmail-cf/cf 。
如果你没有该目录,说明你还没有安装sendmail-cf-8.11.2-14 RPM包,从你的安装CD中安装它。
3. 修改文件redhat.mc如下
divert(-1)
dnl This is the sendmail macro config file. If you make changes to this file,
dnl you need the sendmail-cf rpm installed and then have to generate a
dnl new /etc/sendmail.cf by running the following command:
dnl
dnl m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
dnl
include(`../m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/sendmail.st')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
define(QUEUE_DIR,`/var/spool/mqueue/q*')
TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
DAEMON_OPTIONS(`Port=25,Name=MTA')dnl
DAEMON_OPTIONS(`Port=587,Name=MSA,M=Ea')dnl
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail)dnl
FEATURE(`access_db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
dnl This changes sendmail to only listen on the loopback device 127.0.0.1
dnl and not on any other network devices. Comment this out if you want
dnl to accept email over the network.
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
dnl We strongly recommend to comment this one out if you want to protect
dnl yourself from spam. However, the laptop and users on computers that do
dnl not have 24x7 DNS do need this.
dnl FEATURE(`accept_unresolvable_domains')dnl
dnl FEATURE(`relay_based_on_MX')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
其中,我加了下面的行:
1. define(QUEUE_DIR,`/var/spool/mqueue/q*')
2. TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
3. define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
4. DAEMON_OPTIONS(`Port=25,Name=MTA')dnl
5. DAEMON_OPTIONS(`Port=587,Name=MSA,M=Ea')dnl
注:
第1行我启动了多个邮件队列,希望得到更好的队列处理和性能改进。
第2,3行 移走前面的注释,打开相应的各种认证机制。
第4,5行 设置相应的MTA和MSA所在的端口号。
且注释出了
1. dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
2. dnl FEATURE(`accept_unresolvable_domains')dnl
第1行 允许通过网络连接Sendmail。
第2行 禁止不可解析的域名relay邮件
最后运行
#m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
写到/etc/sendmail.cf文件中
既然我们打开了多个队列,现在我们在/var/spool/mqueue/下创建任意多个队列目录如
#cd /var/spool/mqueue
#mkdir q1 q2 q3 q4 q5 q6
这样Sendmail将会使用这六个目录做为队列目录,增加了性能。

五: 设置SASL认证方案
1. 运行下面的命令,确保SASL被编译进Sendmail.
#/usr/sbin/sendmail -d0.1 -bv root |grep SASL
输出应该类似如下面:
NETUNIX NEWDB QUEUE SASL SCANF SMTP USERDB XDEBUG
确保你能看见上面的文本中的 SASL
2. 测试端口25,确保输出AUTH提示行。
#telnet localhost 25
Trying 127.0.0.1...
Connected to smtp.domain.com.
Escape character is '^]'.
220 smtp.domain.com ESMTP Sendmail 8.11.2/8.11.2; Sun, 1 July 2001 17:56:54 -0800
EHLO localhost
250-smtp.domain.com Hello IDENT:root@smtp.domain.com [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5
250 HELP
quit
221 2.0.0 smtp.domain.com closing connection
Connection closed by foreign host.
你需要至少看见AUTH行中有LOGIN PLAIN在那里,否则不能relay mail。
3. 增加SASL用户且更改密码
#/usr/sbin/saslpasswd jephe
Password: *******
Again (for verification): *******
#/usr/sbin/sasldblistusers
user: jephe realm: smtp.domain.com mech: DIGEST-MD5
user: jephe realm: smtp.domain.com mech: PLAIN
user: jephe realm: smtp.domain.com mech: CRAM-MD5
用户的密码DB文件在/etc/sasldb,用下面的命令确保正确的许可权设置。
特别注意: 在下面的windows的Outlook Express中设置用户名和密码时并不是简单地使用用户名jephe,而是用象“user@realm”的用户名,在这里是 jephe@smtp.domain.com作为用户名。
#chmod 400 /etc/sasldb
可以用/usr/sbin/saslpasswd加更多的用户,用/usr/sbin/sasldblistusers检查用户已经加入。
4. 更改默认的Redhat 7.1密码认证方法
默认地,Redhat 7.1中的Sendmail用PAM方法检查密码,这意味着用户必须是系统用户,为了
增强安全性,我们改用/etc/sasldb中的用户,改下面的文件中的pam为sasldb。
#vi /usr/lib/sasl/Sendmail.conf 更改pwcheck_method行象下面
pwcheck_method:sasldb
5. 最后,运行/etc/rc.d/init.d/sendmail restart重新启动Sendmail。

六: 设置Windows的Outlook Express。
1. Outlook Express仅仅使用 PLAIN LOGIN 认证机制,确保上面的telnet localhost 25中的AUTH行
输出PLAIN LOGIN即可。
2. 在‘工具’-‘帐号’-‘属性’-‘服务器‘-
’发送邮件服务器’中选中‘我的服务器需要认证’
然后在‘登录用户帐号’上填上
“你的用户名@你的realm冒号后面的服务器全称域名”
如:本文的情况是 jephe@smtp.domain.com
密码为你在前面输入的密码。
注意: 用户名绝不是简单地 jephe,必须跟上realm:后面的域名。
3. 现在测试,发一封信给自己,检查tail -f /var/log/maillog有无任何错误
然后在收到自己发出的信之后检查邮件头,你能发现被服务器接收后有个(authenticated)在后面表示是通过允许的认证机制relay的邮件。

七: FAQ。
1. 如果你没有命令saslpasswd,sasldblistusers在/usr/sbin/目录下面。
答: 你需要安装cyrus-sasl-1.5.24-17 RPM包。
2. 如果不想用SASL认证,就用默认的Redhat 的PAM方法。
答: 忽略上面的SASL设置的部分,默认地 Redhat 7.1的 /usr/lib/sasl/Sendmail.conf文件里面为
pwcheck_method:pam
则你就简单地用useradd增加一个系统用户并更改密码即可。
然后在Outlook Express中设置用户名时则只用如“jephe”即可,不需要跟全称域名。
验证pop3
reahat 6.2 ----〉
1。/etc/inetd.conf
# pop3 stream tcp mowait
root /usr/sbin /tcpd/usr/sbin/in.popsd  (#去掉)
2,存盘。/运行inetd
3y验证:netstat -a |grep pop
输出 ------tcp 0 0 * : pop3 *:* listen
ok了!
redhat 7.1以上:
1、vi  etc/services
# pop3 110/tcp
# pop3 110/udp (去掉#)
ok了!


推荐阅读
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • SQL Server 2008 到底需要使用哪些端口?
    SQLServer2008到底需要使用哪些端口?-下面就来介绍下SQLServer2008中使用的端口有哪些:  首先,最常用最常见的就是1433端口。这个是数据库引擎的端口,如果 ... [详细]
  • 问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败,PC端是可以请求 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Linux防火墙配置—允许转发
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • UDP千兆以太网FPGA_verilog实现(四、代码前期准备UDP和IP协议构建)
    UDP:userDatagramprotocol用户数据报协议无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC76 ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
  • 树状笔记软件for linux,Ubuntu 14.04安装开源树状笔记管理软件 WikidPad 2.2
    WikidPad是一款开源免费的wiki风格的树状笔记管理软件,类似于Notepad。基于Python,支持Windows、Mac、Linux等平台。W ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Ansem 最新雄文:软着陆后,加密市场下阶段趋势与核心叙事
    市场最糟糕的时候已经过去,以太坊合并前不太会看到新的低点;但仍需来自关注宏观市场的不确定风险。撰文:Ansem ... [详细]
author-avatar
散場偂爱的擁菢_257
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有