linux下sendmail邮件系统安装操作记录

电子邮件系统的组成: 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是linux系统中一个邮箱系统,如果我们在系统中配置好sendmail就可以直接使用它来发送邮箱。 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。

废话不多说了,下面分享下sendmail在linux系统下的安装部署记录:

一、安装软件 [root@slave-node ~]# yum install -y sendmail [root@slave-node ~]# yum install -y sendmail-cf

启动saslauthd服务进行SMTP验证(默认是安装的,如果没有,就手动安装) [root@slave-node ~]# service saslauthd start Starting saslauthd: [ OK ]

二、邮件服务配置 1)配置Senmail的SMTP认证 将下面两行内容前面的dnl去掉。在sendmail文件中,dnl表示该行为注释行,是无效的,因此通过去除行首的dnl字符串可以开启相应的设置行。 [root@slave-node ~]# vim /etc/mail/sendmail.mc ...... TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

2) 设置Sendmail服务的网络访问权限(如果是直接本机调用,可以不用操作,采用默认的127.0.0.1。不过最后还是改成0.0.0.0) 将127.0.0.1改为0.0.0.0,意思是任何主机都可以访问Sendmail服务。 如果仅让某一个网段能够访问到Sendmail服务,将127.0.0.1改为形如192.168.1.0/24的一个特定网段地址。 [root@slave-node ~]# vim /etc/mail/sendmail.mc ...... DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

3)生成配置文件 Sendmail的配置文件由m4来生成,m4工具在sendmail-cf包中。如果系统无法识别m4命令,说明sendmail-cf软件包没有安装 [root@slave-node ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

4)启动服务 [root@slave-node ~]# service sendmail start Starting sendmail: [ OK ] Starting sm-client: [ OK ] [root@slave-node ~]# service saslauthd restart Stopping saslauthd: [ OK ] Starting saslauthd: [ OK ]

将服务加入自启行列 [root@slave-node ~]# chkconfig sendmail on [root@slave-node ~]# chkconfig saslauthd on [root@slave-node ~]# chkconfig --list |grep sendmail sendmail 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@slave-node ~]# chkconfig --list |grep saslauthd saslauthd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

三、测试发送邮箱 (1)第一种方式:安装sendmail即可使用。 [root@slave-node ~]# yum -y install mailx

创建一个邮件内容文件,然后发邮件(注意-s参数后的邮件标题要用单引号,不能使用双引号,否则发邮件会失败!) [root@slave-node ~]# echo 'This is test mail'>/root/content.txt [root@slave-node ~]# cat /root/content.txt This is test mail [root@slave-node ~]# mail -s 'Test mail' wang_shibo***@163.com < /root/content.txt

查看已收到邮件:

如果不想通过文件发送邮件内容也可以这么发送,也可以使用管道符直接发送邮件内容,效果同文件发送邮件内容一样 [root@slave-node ~]# echo "This is test mail" | mail -s '666666' wang_shibo***@163.com 查看已收到邮件:

如果是发送给多个邮件,就使用-c参数,如下: [root@slave-node ~]# echo "This is test mail" | mail -s 'test' -c wang_shibo***@sina.com wang_shibo***@163.com

(2)第二种方式:利用外部的smpt服务器 上面第一种方式中,/bin/mail命令会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用。 而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的。

修改/etc/mail.rc文件(有的版本叫/etc/nail.rc,添加下面内容: set from=fromUser@domain.com smtp=smtp.domain.comset smtp-auth-user=username smtp-auth-password=passwordset smtp-auth=login

参数说明: from是发送的邮件地址 smtp是发生的外部smtp服务器的地址 smtp-auth-user是外部smtp服务器认证的用户名。注意一定要填写邮件全称!! smtp-auth-password是外部smtp服务器认证的用户密码 smtp-auth是邮件认证的方式

配置完成后,就可以正常发送邮件了,如下 [root@slave-node ~]# vim /etc/mail.rc                     //在文件底部添加 set from=ops@huanqiu.cn smtp=smtp.huanqiu.cn smtp-auth-user=ops@huanqiu.cn smtp-auth-password=zh@123bj smtp-auth=login

现在开始发邮件: [root@slave-node ~]# echo "hello world" |mail -s 'test666' wangshibo@huanqiu.cn

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

新手指南:如何用Ettercap实现“中间人攻击”

什么是“中间人攻击”? 中间人攻击(Man-in-the-Middle Attack,简称“MiTM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术...

3317
来自专栏Golang语言社区

Linux服务器最最基本安全策略

1、Linux SSH 安全策略一:关闭无关端口 网络上被攻陷的大多数主机,是黑客用扫描工具大范围进行扫描而被瞄准上的。所以,为了避免被扫描到,除了必要的端口,...

5799
来自专栏前端萌媛的成长之路

一波webpack

1904
来自专栏.Net移动开发

关于发布IOS的方法(本人亲身经历折腾很久终于成功)

前情提要:这位.NET程序员兄弟使用Smobiler开发了一个APP,尽管Smobiler云平台已经最大限度的简化了iOS应用的打包操作,但仍绕不开苹果公司强制...

1521
来自专栏Python中文社区

如何简单高效地部署和监控分布式爬虫项目

1、请先确保所有主机都已经安装和启动 Scrapyd,如果需要远程访问 Scrapyd,则需将 Scrapyd 配置文件中的 bind_address 修改为 ...

2074
来自专栏小狼的世界

Kubernetes基础:编排调度的那些Controllers

Kubernetes提供了很多Controller资源来管理、调度Pod,包括Replication Controller、ReplicaSet、Deploym...

1652
来自专栏Hadoop实操

重庆某项目生产集群扩容问题总结及复盘

本文主要讲述重庆某项目生产集群扩容项目问题总结及复盘。其中部分问题之前有写过相关文档,可参考我之前写的文章《CDH集群安装YARN无法正常启动及解决办法》、《H...

1551
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Alerta监视Zabbix警报

Alerta是一个Web应用程序,用于合并和删除来自多个监视系统的警报,并在界面上显示它们。Alerta可以与许多的监控工具集成,如Nagios,Zabbix,...

2264
来自专栏FreeBuf

初探伪装在Office宏里的反弹Shell

通常的钓鱼邮件场景中office的安全问题一直都受到关注,恶意宏文档制作简单,兼容性强,并且攻击成本较小,所以整体占比较大。但是使用恶意宏进行攻击,往往需要用户...

1082
来自专栏重庆的技术分享区

在Ubuntu上安装开源邮件服务器-iRedmail

运行自己的邮件服务器有很多好处。它允许您管理邮箱和附件的大小,运行每小时/每日电子邮件备份,查看邮件日志,并允许您自由使用任何可用的域名。缺点通常是安装所有必要...

2.3K2

扫码关注云+社区

领取腾讯云代金券