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

sendmail安装配置步骤详解

电子邮件系统的组成5部分:MTA,MSA,MUA,MDA,MAA1,邮件用户代理(MailUserAgent,MUA)MUA是一个邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口。最常用的MUA有:linux中的mail,elm,pine等。Window

电子邮件系统的组成

5 部分: MTA , MSA , MUA , MDA , MAA 1,   邮件用户代理( Mail User Agent , MUA ) MUA 是一个邮件系统的客户端程序,它提供了阅读,发送和接受电子邮件的用户接口。 最常用的 MUA 有: linux 中的 mail , elm , pine 等。 Windows 的 outlook , foxmail 等 2,   邮件代理器( Mail Transfer Agent , MTA ) MTA 负责邮件的存储和转发( store and forward )。 MTA 监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接受到的邮件进行缓冲。 在 linux 下的 MTA 程序有: sendmail , qmail 等, 3,   邮件提交代理( Mail Submmission Agent , MSA ) MSA 负责消息有 MTA 发送之前必须完成的所有准备工作和错误检测, MSA 就像在 MUA 和 MTA 之间插入了一个头脑清醒的检测员对所有的主机名,从 MUA 得到的信息头等信息进行检测。 4,   邮件投递代理( Mail Ddlivery Agent , MDA ) MDA 从 MTA 接收邮件并进行适当的本地投递,可以投递个一个本地用户,一个邮件列表,一个文件或是一个程序。 Linux 下常用的 MDA 是 mail.local , smrsh 和 procmail ( www.procmail.org ) 5,   邮件访问代理( Mail Access Agent , MAA ) MAA 用于将用户连接到系统邮件库,使用 POP 或 IMAP 协议收取邮件。 Linux 下常用的 MAA 有 UW-IMAP , Cyrus-IMAP , COURIER-IMAP 等 邮件中继: 就是当邮件向目的地址传输时,一旦源地址和目的地址都不是本地系统,那么本地系统就是邮件的中继(中转站)
MUA 使用者透过这个程序与邮件服务器沟通,包括收信(以 POP3 连接收信服务器程序 imapd)或寄信(以SMTP 连接 MTA),例如: Outlook Express……等。
MTA 使用 SMTP 通讯协议将信件传递到不同邮件主机上面,例如: sendmail, postfix, Qmail……等。
MSA 是新版 sendmail 发展给 SSMTP 进行 TLS/SSL 联机的 client 端代理器。
MDA 收到信后将信件分配到不同使用者信箱内,算是 MTA 的一个子系统,譬如 BBS 从定义上来说也算是 MDA( BBS 功能复杂,当然不仅仅是 MDA),有些 MDA 被设计来进行滤信动作,它们必须在 local 端运作,因此又被称为 LDA,例如: procmail……等。
MailBox 尚未被使用者下载的邮件,会暂存在服务器的硬盘空间里,称之为信箱。所有使用者信箱的总合必须约等于该分割区总容量的一半,以避免造成信箱尚有空间但邮件系统却无法运作的现象。
Mail Gateway 是一种特殊的邮件服务器,通常扮演代理器的角色,负责统筹某机构内所有信件的收发,并分配邮件给下属的邮件服务器们,透过这个机制能够加速邮件的交换,并且能够进行一致的滤信控制。

Sendmail的配置文件
/etc/mail/sendmail.cf :Sendmail的主配置文件;
/etc/mail/access :中继访问控制;
/etc/mail/domaintable ;域名映射;
/etc/mail/local-host-names ;本地主机别名;
/etc/mail/mailertable :为特定的域指定特殊的路由规则;
/etc/mail/virtusertable :虚拟域配置。

中继的配置

是指一台服务器接受并传递源地址和目的地址都不是本服务器的邮件。
在两个文件中进行设置:
/etc/mail/relay-domains
/etc/mail/access。

下面是安装部分

1. 保障DNS服务器正常解析,有MX有对应的A记录等

2. 安装sendmail-8.12.11-4.RHEL3.1+sendmail-cf-8.13.1-2+cyrus-sasl,并增加SMTP认证
cd /etc/mail ; vi sendmail.mc
#找到下面这一段: AEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA') dnl
#将他改成 AEMON_OPTIONS(`Port=25,Addr=0.0.0.0, Name=MSA')dnl
#将下面两前前面的dnl去掉
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
#在上面两行前面增加一行,增加多队列处理能力
define(QUEUE_DIR, `/var/spool/mqueue/q*') #记得在/var/spool/mqueue/目录下建立q1,q2,q3,q4,q5,q6目录!

#编辑完成后,运行m4命令生成sendmail.cf文件
m4 sendmail.mc > mail.cf
#如果m4报Cannot open /usr/share/sendmail-cf/m4/cf.m4错,就看看sendmail-cf这个包安装了没!
cp mail.cf sendmail.cf
#另外在rc.local中增加
/usr/sbin/saslauthd -a pam     #如果没有运行过,可以手工运行一次.

3.安装rpm -ivh /app/imap-2002d-11.i386.rpmvi /etc/xinetd.d/ipop3
# 找到下面这一行:
disable = yes
# 将他改成
disable = no
#最后重启:
/etc/rc.d/init.d/xinetd restart

#如果用的是dovecot,那么需要在安装RPM包后,编辑/etc/dovecot.conf
找到这一行
#protocols = imap imaps
增加一行
protocols = imap imaps pop3 pop3s
另外在/etc/rc.local中增加
/usr/sbin/saslauthd -a pam

4.其它设置:
vi local-host-names    #在这个文件里面添加你的邮件服务器域名,如zhangjianfeng.com
vi /etc/mail/access     #预设情况下有启用的 IP
localhost.localdomain           RELAY
localhost                       RELAY
127.0.0.1                       RELAY
# 想要开放权限的 IP 与网域
192.168.0           RELAY
140.116.44.125         RELAY
# 挡掉的 IP、主机名称与 E-mail
h8h.com       DISCARD
192.168.1.100    DISCARD
test@testing.domain.name   REJECT
# 储存后离开,并运行make access.db (或makemap hash access.db

#编辑别名设定档:
vi /etc/aliases
新加入这一行在 aliases 的最底下:
groupname: st001,st002,st003,st004.st005,st006,st007….. #设置一个群用户,便于群发
groupname:   :include:/etc/mail/student9213 #读取所有群用户的资料在student9213文件中,利于管理
vbird:     vbird,vbird@vbird.adsldns.org #设置一个转发帐户,一封邮件在发给vbird的同时,会抄一份至vbird@vbird.adsldns.org

#制作数据库 /etc/aliases.db   ,运行命令newaliases
在 Red Hat 的预设条件中,在 /var/spool/mqueue 当中的信件会每隔 60 分钟由 Sendmail 尝试重新传送一次到目的地去!这个尝试的时间是可以改变的!可以利用 sendmail 的指令或者直接修改 /etc/sysconfig/sendmail 里面的 『QUEUE=时间』来修订!例如,如果你想要让 Sendmail 每隔 30 分钟就帮你尝试传送 /var/spool/mqueue 里面的未寄出的信件时,那么就将 /etc/sysconfig/sendmail 这个档案里面的『QUEUE=1h 』改成『QUEUE=30m 』即可!

————————-
mail使用相关
————————-
++给某用户发邮件
mail user@email.domain.name
Subject: This is a test mail
There are writing area!
You can't use the Up/Down button in this form…
you can finish with "."
. <==这个『.』就是结束符号!要正常离开编辑画面就是 . !
Cc: <==这就是副本!

++用 mail 寄出纯文本文件
mail -s '这里可以接邮件标题' 这里是邮件收件者 <文件名称
范例: mail -s 'This is a test mail' vbird
++sendmail中,可不可以把一个用户的信转发的同时保存副本
经理想把发到eee@iie.com 的信都转到eee@sohu.com 去。但同时在eee@iee.com 里保存一封!@
edit $HOME/.forward
address1 #这个是要转发的地址
address2/ #这?? address2/ 是自己,自己要加 / 的原因是避免 loop

++?h除mail
    mail -u username
    del 邮件编号

++显示信件队列
mailq -v

++显示邮件在 Mailer 中的统计状态  
mailstats

++立即发送队列的邮件
sendmail -q

++立即处理队列中alpha用户的邮件  
sendmail -qS alpha

++邮件别名、组建立等
vi /etc/aliases ;newalises

++限制最大邮件
vi /etc/sendmail.cf
# maximum message size
O MaxMessageSize=20000000 (注:20M)
注:sendmail模块里不能判断有无附档,只能判断整个邮件大小

++限制最大的群发数目
vi /etc/sendmail.cf
# maximum number of recipients per SMTP envelope
O MaxRecipientsPerMessage=100 (注:100个)

++控制sendmail发送邮件列表的时间设置
vi /etc/sysconfig/sendmail
QUEUE=1h表示1小时,1m表示1分钟,自己根据需要调整吧.

++mailstats邮寄状态查询命令
M :
msgsfr:发送的邮件数量。
bytes_from:邮件容量
megsto:收到邮件的数量。
bytes_to:同上
msgsrej:邮件deny的次数。
msgsdis:邮件discard的次数。
Mailer :esmtp对外邮件 ,local本地邮件 。

++在Sendmail中添加RBL功能
需要对sendmail.mc添加以下内容:
  FEATURE(`dnsbl",`relays.ordb.org",`″Email blocked using ORDB.org - see ″")  
最后执行"m4 sendmail.mc>sendmail.cf"

++sendmail启动慢
在hosts里面加入主机名的FQDN名称

++清除队列邮件
rm /var/spool/mqueue/xxxx

++修改telnet mailserver 25时得到的邮件服务器FQDN信息
修改/etc/sysconfig/network里的hostname

++# my official domain name
++#… define this only if sendmail cannot automatically determine your domain
Dj$w.Foo.COM #其中$w指主机名部分(no domain name)

++定义aliases档案位置
0 AliasFile=/etc/mail/aliases

++ minimum number of free blocks on filesystem
O MinFreeBlocks=100

++ maximum hop count
#O MaxHopCount=25

++ send to me too, even in an alias expansion?
#O MeToo=True

++ queue directory
O QueueDirectory=/var/spool/mqueue

++ maximum number of children we allow at one time
#O MaxDaemOnChildren=0 # sendmail预设可以同时启动12个,表示可以同时收12封信

++sendmail仅做转发服务器设置
1).去掉local-host-names中相应域名
2).编辑mailertable,加入类似下行
zhangjianfeng.com      relay:[192.168.0.200] #192.168.0.200即为后端邮件服务器
3).vi access,add following line.
zhangjianfeng.com RELAY

++smarthost 邮件转寄设置方法
vi /etc/mail/sendmail.cf
找到DS
改为DS[*.*.*.*] 注:填入要转寄的smarthost地址

测试服务器是否已经限制了第三方转发:http://www.abuse.net/relay.html ,正确的Relay test result应该是
All tests performed, no relays accepted.


推荐阅读
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本文详细介绍了如何在预装Ubuntu系统的笔记本电脑上安装Windows 7。针对没有光驱的情况,提供了通过USB安装的具体方法,并解决了分区、驱动器无法识别等问题。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 探索新一代API文档工具,告别Swagger的繁琐
    对于后端开发者而言,编写和维护API文档既繁琐又不可或缺。本文将介绍一款全新的API文档工具,帮助团队更高效地协作,简化API文档生成流程。 ... [详细]
  • Linux中的yum安装软件
    yum俗称大黄狗作用:解决安装软件包的依赖关系当安装依赖关系的软件包时,会将依赖的软件包一起安装。本地yum:需要yum源,光驱挂载。yum源:(刚开始查看yum源中的内容就是上图 ... [详细]
  • 本文探讨了如何解决PHP文件无法写入本地文件的问题,并解释了PHP文件中HTML代码无效的原因,提供了一系列实用的解决方案和最佳实践。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • 本文介绍了如何在 Ubuntu 18.10 Cosmic 停止官方支持后,通过更换软件源来解决 `apt update` 失败的问题。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
author-avatar
手机用户2502904917
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有