有些问题需要第一时间发邮件报警出来,否则漏掉之后比较麻烦。
需求: 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 #或者 mail -s "主题" 收件地址 -a 附件 < 文件(邮件正文.txt) #或者 mail -vv -s "hello nineusn by shell" 'test@126.com' 该种方式发送的邮件内容是以附件形式发送的
例子一:发送一封域外邮件的具体例子,也可以是用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