(一)、环境
系统:CentOS7.4
Sendmail安装
OTRS:6.0.18linux
(二)、SMTP介绍:
SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效、可靠的邮件传输。它的一个重要特色是它可以在传送中接力传送邮件,即邮件能够经过不一样网络上的主机接力式传送。一般它工做在两种状况下:一是邮件从客户机传输到服务器;二是从某一个服务器传输到另外一个服务器。SMTP是一个请求/响应协议,它监听25号端口,用于接收用户的Mail请求,并与远端Mail服务器创建SMTP链接。vim
二、SMTP协议工做机制服务器
SMTP一般有两种工做模式。发送SMTP和接收SMTP。具体工做方式为:发送SMTP在接收到用户的邮件请求后,判断此邮件是否为本地邮件,如果直接投送到用户的邮箱,不然向DNS查询远端邮件服务器的MX记录,并创建与远端接收SMTP之间的一个双向传送通道,此后SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方向传送。一旦传送通道创建,SMTP发送者发送MAIL命令指明邮件发送者。若是SMTP接收者能够接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。若是SMTP接收者接收,则返回OK应答;若是不能接收到,则发出拒绝接收应答(但不停止整个邮件操做),双方将如此反复屡次。当接收者收到所有邮件后会接收到特别的序列,入伏哦接收者成功处理了邮件,则返回OK应答。网络
三、SMTP的链接和发送过程dom
(a)创建TCP链接ide
(b)客户端发送HELO命令以标识发件人本身的身份,而后客户端发送MAIL命令;服务器端正但愿以OK做为响应,代表准备接收工具
(c)客户端发送RCPT命令,以标识该电子邮件的计划接收人,能够有多个RCPT行;服务器端则表示是否愿意为收件人接收邮件测试
(d)协商结束,发送邮件,用命令DATA发送this
(e)以.表示结束输入内容一块儿发送出去3d
(f)结束这次发送,用QUIT命令退出
(三)sendmail安装与配置
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安装
yum install -y sendmail yum install -y sendmail-cf
二、建立自定义服务启动。
systemctl enable sendmail systemctl start sendmail
三、sendmail配置SMTP认证
将下面两行内容前面的dnl去掉。在sendmail文件中,dnl表示该行为注释行,是无效的,所以经过去除行首的dnl字符串能够开启相应的设置行。
先备份在编辑
cp /etc/mail/sendmail.rc /etc/mail/sendmail.rc.bak 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
四、设置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@otrs ~]# vim /etc/mail/sendmail.mc DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
五、生成配置文件
Sendmail的配置文件由m4来生成,m4工具在sendmail-cf包中。若是系统没法识别m4命令,说明sendmail-cf软件包没有安装[root@otrs ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
六、重启服务systemctl restart sendmail
七、查看日志和队列
[root@otrs ~]# mailq /var/spool/mqueue is empty Total requests: 0 [root@otrs ~]# tail -f /var/log/maillog May 13 21:12:06 otrs sendmail[2891]: x4DDC4w2002889: to=<songyaqi@kjdow.com>, delay=00:00:02, xdelay=00:00:02, mailer=esmtp, pri=120993, relay=mxbiz1.qq.com. [183.57.48.34], dsn=5.0.0, stat=Service unavailable May 13 21:12:06 otrs sendmail[2891]: x4DDC4w2002889: x4DDC6w2002891: DSN: Service unavailable May 13 21:12:07 otrs sendmail[2891]: STARTTLS=client, relay=mxbiz2.qq.com., version=TLSv1/SSLv3, verify=FAIL, cipher=AES128-SHA256, bits=128/128 May 13 21:12:08 otrs sendmail[2891]: x4DDC6w2002891: to=<otrs@kjdow.com>, delay=00:00:02, xdelay=00:00:02, mailer=esmtp, pri=32188, relay=mxbiz2.qq.com. [183.57.48.34], dsn=5.0.0, stat=Service unavailable May 13 21:12:08 otrs sendmail[2891]: x4DDC6w2002891: x4DDC6w3002891: return to sender: Service unavailable May 13 21:12:08 otrs sendmail[2891]: x4DDC6w3002891: to=root, delay=00:00:00, xdelay=00:00:00, mailer=local, pri=33212, dsn=2.0.0, stat=Sent May 13 21:36:23 otrs sendmail[3202]: starting daemon (8.14.7): SMTP+queueing@01:00:00 May 13 21:36:23 otrs sm-msp-queue[3219]: starting daemon (8.14.7): queueing@01:00:00 May 13 21:43:28 otrs sendmail[3483]: starting daemon (8.14.7): SMTP+queueing@01:00:00 May 13 21:43:28 otrs sm-msp-queue[3500]: starting daemon (8.14.7): queueing@01:00:00
(四)、测试发送邮箱
(1)、第一种方法安装sendmail和mailx[root@otrs ~]#yum -y install mailx
建立一个邮件内容文件,而后发邮件(注意-s参数后的邮件标题要用单引号,不能使用双引号,不然发邮件会失败!)
[root@otrs ~]# echo 'This is test mail'>/root/content.txt [root@otrs ~]# cat /root/content.txt This is test mail [root@otrs ~]# mail -s 'this is otrs test message' xxxxxxx@qq.com < /root/content.txt
见下图。
也能够经过管道符直接发送邮件内容[root@otrs ~]# echo "this is first test message of otrs" | mail -s 'orts-otrs' 284315732@qq.com
(二)第二种方法:利用外部的smtp服务器进行发送。
经过外部的smtp服务器进行发送,修改/etc/mail.rc文件,在最下边添加以下配置。上面第一种方式中,/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@otrs ~]# cat /etc/mail.rc set from=otrs@kjdow.com set smtp=smtp.exmail.qq.com set smtp-auth-user=otrs@qq.com set smtp-auth-password=xxxx set smtp-auth=login
经过mail -s 'this is otrs test message' xxxxxxx@qq.com < /root/content.txt 进行发送邮件了。
(五)、配置otrs工单管理系统。
以下图,依次选中系统管理---系统配置---Core---Email---SendmailModule模块
备注若是sendmail出现 DSN: Service unavailable。这是因为主机名没有正确解析致使的。具体解决步骤以下:
一、cat /etc/hosts [root@otrs ~]# cat /etc/hosts 183.57.48.34 mxbiz1.qq.com. 192.168.4.203 otrs.bakheet.cn. 二、cat /etc/sysconfig/network [root@otrs ~]# cat /etc/sysconfig/network HOSTNAME=otrs.bakheet.cn 三、重启服务
注意/etc/hosts文件和/etc/sysconfig/network 里面的HOSTNAME必须一致, 而且修改/etc/sysconfig/network里面的hostname文件,必须用命令hostname xxx使其生效, 不然会提示 dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]