有些问题需要第一时间发邮件报警出来,否则漏掉之后比较麻烦。
需求: GP外部表有一个location 选项,这个选项是一个ip地址后面跟一个文件名,这个文件和外部表一 一对应。现需要监控外部表的location 是否为外部文件所放的IP地址。
发监控邮件用mail命令即可,不需要使用sendmail命令.
解决:
1、添加邮件服务器域名解析到/etc/hosts/
maildrop]# echo "邮件服务器ip地址 smtp.域名.com" >>/etc/hosts
2、修改/etc/mail.rc
#mail
set smtp=smtp.xxx.com # 这里填入smtp地址
set smtp-auth=login # 认证方式
set smtp-auth-user="test" # 默认对外发邮件的用户(关键),SMTP.domain.com认证的用户
set smtp-auth-password=password # 这里填入密码(并非发件人邮箱的密码)
set ssl-verify=ignore # 忽略证书警告
set from=user@xxx.com # 设置发信人邮箱
set nss-config-dir="/root/.certs" # 证书所在目录
3、重启postfix
home]# postfix stop
postfix/postfix-script: stopping the Postfix mail system
home]# postfix start
postfix/postfix-script: starting the Postfix mail system
postfix reload 重新加载postfix 配置
Postfix邮件服务器采用了模块化的设计,由许多个不同的程序集合而成,分别用于实现不同的功能。Postfix在启动时首先启动名为master的进程,由master进程主导邮件的处理工作。
Postfix邮件系统的控制主要通过/usr/sbin/postfix命令进行,结合start、stop、check、reload选项分别实现启动、停止、检查、重载服务的操作。例如,若要启动postfix邮件服务,并验证服务状态,可以执行以下操作。
postfix]# postfix start
postfix/postfix-script: fatal: the Postfix mail system is already running
postfix]# postfix status
postfix/postfix-script: the Postfix mail system is running: PID: 25621
需要注意的是,实际监听服务的进程名并不是postfix,而是master。
postfix]# netstat -anpt | grep ":25"
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 25621/master
tcp 0 0 ::1:25 :::* LISTEN 25621/master
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-p 显示建立相关链接的程序名
4、如何发送一封邮件?
echo '邮件内容' | mail -s '邮件标题' 收件人邮箱
#或者:
cat 邮件内容.txt | mail -s '邮件标题' 收件人邮箱
#或者
mail -s '邮件标题' 收件人邮箱 < 邮件内容.txt
以下是发送一封邮件时的一个例子具体例子,也可以是用telnet mail.domain.com 25来一步一步模拟这个步骤。
]# echo -e "HostName: $HOSTNAME , ServiceName:$date" | mail -vv -s "hello nineusn" 'wtest@126.com'
Resolving host smtp.cecchot.com . . . done.
Connecting to 10.56.200.80 . . . connected.
220 domain.com Anti-spam GT for Coremail System (domain.com[20190919])
>>> EHLO P1MAIL01 宣告客户机地址
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN 表示支持SMTP认证
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrfCDojUCa0xDrUUUUj
250-STARTTLS
250-SMTPUTF8
250 8BITMIME
>>> AUTH LOGIN 告知要进行认证登录,“AUTH LOGIN”进行登录认证,然后才能够正常发送邮件。用户名,密码字串默认使用BASE64编码的加密格式,使用openssl工具可以生成
334 dXNlcm5hbWU6 输入加密的用户名字串
>>> Y2ltc3VwcG9ydA== 通过openssl 对账户加密后的,可以使用测试 printf "user" | openssl base64
334 UGFzc3dvcmQ6 输入加密的密码字串
>>> Q2ltLVpueHh6eDMxNQ== 通过openssl 对密码加密后的,可以使用测试 printf "passwd" | openssl base64
235 Authentication successful 认证成功的反馈信息
>>> MAIL FROM:<cimsupport@cecchot.com> 告知发件人
250 Mail OK
>>> RCPT TO:<wangxucs123@126.com> 告知外域收件人地址
250 Mail OK
>>> DATA 告知要发送邮件数据
354 End data with <CR><LF>.<CR><LF>
>>> .
250 Mail OK queued as AQAAfwC32dWmzR9f9cVoAA--.24696S2 成功提交到发送队列
>>> QUIT
221 Bye
需要注意的是
1、只有通过SMTP认证的用户才允许向外域发送邮件,否则只能够给本域内的其他用户发送邮件。例如,只有在通过认证以后,用户a@eeechot.com才能够向test@163.com等外部邮箱发送邮件,否则只能向lessof@eeechot.com等本域内的其他用户发送邮件。
2、向外域发送邮件时,还需要DNS服务器,外域的邮件服务器,互联网络等支持,对方才能够成功收到邮件
3、启动postfix时报错处理
安装 rpm -ivh mysql-libs-5.1.73-3.el6_5.x86_64.rpm
来源:oschina
链接:https://my.oschina.net/u/4348489/blog/4450528