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 ]

二、邮件服务配置(iptables防火墙关闭)
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)启动服务(如果发现sendmail dead but subsys locked,那就执行"service postfix status"查看postfix是否默认开启了,如果开启的话,就关闭postfix,然后再启动或重启sendmail服务即可。)
[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

如遇下面报错,解决办法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

发送邮件:

[root@mail-server ~]# echo "This is test mail" | mail -s '666666' wangshibo@kevin.com

发现收不到邮件,查看sendmail日志,报错信息如下:

[root@mail-server ~]# tail -f /var/log/maillog

.......

Feb 12 03:35:13 mail-server sendmail[21905]: My unqualified host name (mail-server) unknown; sleeping for retry

Feb 12 03:37:12 mail-server sendmail[22061]: w1BJb8KM022059: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server> (0/0), delay=00:00:03, xdelay=00:00:03,

mailer=esmtp, pri=120476, relay=mx1.kevin.com. [128.1.41.15], dsn=4.0.0, stat=Deferred: 450 Requested mail action not taken: Invalid sender

分析原因:

这是由于主机名没有正确解析导致的。

[root@mail-server ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.10.202 mail-server

[root@mail-server ~]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=mail-server

解决办法:

[root@mail-server ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.10.202 mail-server.localdomain mail-server

[root@mail-server ~]# cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=mail-server

[root@mail-server ~]# rm -rf /var/spool/mqueue/*

[root@mail-server ~]# /etc/init.d/sendmail restart

Shutting down sm-client:                                   [  OK  ]

Shutting down sendmail:                                    [  OK  ]

Starting sendmail:                                         [  OK  ]

Starting sm-client:                                        [  OK  ]

再次使用mail发送邮件就正确了!

[root@mail-server ~]# echo "This is test mail" | mail -s '666666' wangshibo@kevin.com

[root@mail-server ~]# tail -f /var/log/maillog

.......

Feb 12 03:42:31 mail-server sendmail[22293]: STARTTLS=client, relay=mx1.kevin.com., version=TLSv1/SSLv3, verify=FAIL, cipher=AES256-GCM-SHA384, bits=256/256

Feb 12 03:42:31 mail-server sendmail[22299]: STARTTLS=client, relay=mx1.kevin.com., version=TLSv1/SSLv3, verify=FAIL, cipher=AES256-GCM-SHA384, bits=256/256

Feb 12 03:42:31 mail-server sendmail[22302]: STARTTLS=client, relay=mx1.kevin.com., version=TLSv1/SSLv3, verify=FAIL, cipher=AES256-GCM-SHA384, bits=256/256

Feb 12 03:42:33 mail-server sendmail[22284]: STARTTLS=client, relay=mx1.kevin.com., version=TLSv1/SSLv3, verify=FAIL, cipher=AES256-GCM-SHA384, bits=256/256

Feb 12 03:42:34 mail-server sendmail[22293]: w1BJgTcF022288: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server.localdomain> (0/0), delay=00:00:05, xdelay=00:00:05, mailer=esmtp, pri=120510, relay=mx1.kevin.com. [116.115.114.9], dsn=2.0.0, stat=Sent (Mail OK queued as AQAAfwB3EaEnDYFaHrpiAA--.12694S3)

Feb 12 03:42:35 mail-server sendmail[22302]: w1BJgUPI022300: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server.localdomain> (0/0), delay=00:00:05, xdelay=00:00:05, mailer=esmtp, pri=120510, relay=mx1.kevin.com. [115.123.124.105], dsn=2.0.0, stat=Sent (Mail OK queued as AQAAfwDXQD0oDYFaoMJxAA--.21712S3)

Feb 12 03:42:36 mail-server sendmail[22299]: w1BJgToO022294: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server.localdomain> (0/0), delay=00:00:06, xdelay=00:00:06, mailer=esmtp, pri=120510, relay=mx1.kevin.com. [115.123.124.105], dsn=2.0.0, stat=Sent (Mail OK queued as AQAAfwB3HTonDYFancJxAA--.21596S3)

Feb 12 03:42:40 mail-server sendmail[22284]: w1BJgSAl022282: to=<wangshibo@kevin.com>, ctladdr=<root@mail-server.localdomain> (0/0), delay=00:00:12, xdelay=00:00:12, mailer=esmtp, pri=120510, relay=mx1.kevin.com. [139.162.158.182], dsn=2.0.0, stat=Sent (Mail OK queued as AQAAfwDHp2QmDYFayl55AA--.6056S3)

(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

Linux系统sendmail发送邮件相关推荐

  1. linux搭建sendmail邮件服务器,Linux系统Sendmail架设Mail服务器

    一.安装Sendmail 完全安装Red Hat Linux 9.0时,Sendmail就会自动内置,版本号为8.12.8-4.如果你不确定Linux是否已经安装有sendmail,可以输入以下命令查 ...

  2. linux上sendmail配置文件,linux系统SendMail详细配置

    1. 安装相关服务 DNS Mailserver(sendmail.imap) 2. 启动相关服务 Service named restart Service sendmail restart Ser ...

  3. linux sendmail配置,linux系统SendMail详细配置

    1. 安装相关服务 DNS Mailserver(sendmail.imap) 2. 启动相关服务 Service named restart Service sendmail restart Ser ...

  4. Linux使用sendmail发送邮件

    1.安装组件(阿里云服务器centos可以使用vpsmate安装邮件服务) yum install sendmail 2.使用shell发送 mail -s "titile" xi ...

  5. linux 使用sendmail发送邮件

    1111111111 转载于:https://www.cnblogs.com/We612/p/11274139.html

  6. linux系统怎样发邮件,linux系统下如何发送邮件

    在使用linux服务器的过程中,我希望某个任务完成后,系统会自动发邮件告诉我.这就需要用到发送邮件的功能. 网络上搜索了一下,一般的linux系统都已经安装了邮件服务程序sendmail(但不一定是开 ...

  7. Linux配置sendmail实现PHP发送邮件

    Linux配置sendmail实现PHP发送邮件 1.安装sendmail yum -y install sendmail 2.安装mail命令 yum -y install mailx 3.开启se ...

  8. linux发邮件失败,Linux SendMail发送邮件失败诊断案例,sendmail发送邮件

    Linux SendMail发送邮件失败诊断案例,sendmail发送邮件 Linux上Sendmail经常由于一些配置问题,导致邮件发送失败,下面整理.收集了一些邮件发送失败.异常的案例. 案例1: ...

  9. 在 linux 上使用 sendmail 发送邮件

    还是记录一个小点:如何在 linux上使用 sendmail发送邮件? 总共分为以下几个步骤: 1.安装 sendmail 在 CentOS上使用 yum即可安装,具体步骤略过 2.配置主机名 在 / ...

最新文章

  1. 清华大学《大数据系统基础A/B》课程实践项目宣讲会来了
  2. TensorFlow学习笔记之三(神经网络的优化)
  3. 程序员关机代码python_Python实现远程开关机【高薪必备技术】
  4. 数据库系统原理(第三章数据库设计 )
  5. Mybatis中resultMap使用
  6. TPL 和传统 .NET Framework 异步编程
  7. LeetCode 303. 区域和检索 - 数组不可变(前缀和)
  8. 用计算机名怎么共享电视盒,机顶盒怎么通过电脑实现局域网共享
  9. 软件工程(2019)第三次作业
  10. iOS中使用URL Scheme进行App跳转
  11. 谷歌金山词霸正式发布--免费午餐越来越多
  12. 用word写小论文时如何实现两栏格式公式居中,编号右对齐
  13. 不同VLAN中的计算机可以ping通吗,不同vlan间互相能ping通配置.ppt
  14. 城市感知体系十大典型应用场景
  15. 出现10048和9017错误提示的处理
  16. 智能路灯引路冰蓄冷替空调
  17. TS3180打印机喷头堵塞以及打印照片颜色偏暗完美解决
  18. 爱奇艺知识播放体验优化的探索和实践
  19. ChinaSkills-网络系统管理003(VMware ESXI云平台搭建)
  20. 静态时序分析—虚拟时钟(virtual clock)与I/O延时约束

热门文章

  1. addition过程 sgnb_NSA辅载波SN添加成功率优化指导书(中兴设备)
  2. 【最全】阶乘算法!(python和C语言)
  3. halcon 偏折法_halcon10的C#工程改为halcon17的正确方法
  4. 直接在网络上编辑制作图片
  5. 用 Python 编写干净、可测试、高质量的代码
  6. AI_News周刊:第一期
  7. layui city-picker js实现全国地市区域级联选择
  8. oversample upsample
  9. Type-c PD QC AFC取电芯片 快充芯片LDR6328S
  10. php mysql安装图解_mysql安装图解 mysql图文安装教程(详细说明)_MySQL