|
postfix 邮件服务器和shell邮件报警
一个系统里只能有一个邮件服务器
首先卸载系统自带的sendmail,或者关闭服务
安装postfix 邮件
yum -y install postfix*
注意:postfix 只能提供25号端口的进程和程序
接收邮件的110端口是由dovecot来提供的进程和程序
安装dovecot
yum -y install dovecot*
postfix 配置和服务
cd /etc/postfix/
vi main.cf
修改
myhostname = mail.g.cn (你的主机名)
mydomain = g.cn (你的域名)
myorigin = $myhostname (你的发送邮件后缀)
myorigin = $mydomain (你的发送邮件后缀)
inet_interfaces = all (25端口在所有端口监听)
mydestination = $myhostname,$mydomain (收件人的邮件后缀)
mynetworks = 192.168.1.0/24 , 127.0.0.0/8 (服务器所处网段)
relay_domains = $mydestination (允许中继转发)
重启服务
service postfix restart
查看25号端口
netstat -tunpl | grep 25
发现进程叫做master
改变默认邮件服务器
[iyunv@localhost ~]# alternatives --config mta
There is 1 program that provides 'mta'.
Selection Command
-----------------------------------------------
*+ 1 /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 1
这样25号端口的发信就设置好了
配置和启动dovecot
vi /etc/dovecot/dovecot.conf
修改protocols 把#号去掉 保存
service dovecot restart
chkconfig dovecot on
现在在linux系统中创建系统用户
useradd user1
passwd user1
useradd user2
passwd user2
当这2个用户创建好了 根据上面的邮件设置 我们的系统会自动给这2个用户创建一个系统邮箱 叫 user1@g.cn ,user2@g.cn
通过outlook 添加pop3的邮件用户 分别为user1,user2 收发服务器全都写上linux的服务器主机ip 这样就可以测试了
在linux中通过postfix发邮件
第一种方式:
首先安装telnet-server ,telnet
yum -y install telnet-server*
yum -y install telnet
启动服务(也可以通过/etc/xinetd.d/telnet 这个配置文件把disable改成 no来启动)
chkconfig telnet on
service xinetd restart(这个是telnet服务端的服务进程)
[iyunv@localhost init.d]# telnet 127.0.0.1 25 [登录25号端口写邮件]
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 mail.g.cn ESMTP Postfix
mail from:root@g.cn [邮件的发件人 回车]
250 2.1.0 Ok
rcpt to:user1@g.cn [邮件的收件人回车]
250 2.1.5 Ok
data [输入内容指令 回车]
354 End data with <CR><LF>.<CR><LF>
root -> user1 [邮件内容 回车]
. [以点来结束邮件内容]
250 2.0.0 Ok: queued as AD3523B0E
quit [退出登录]
221 2.0.0 Bye
Connection closed by foreign host.
[iyunv@localhost init.d]#
这样信件就发送成功了
使用
mail命令查看邮件状态
q退出
编写测试脚本
#!/bin/bash
#disk.sh
#发送主题为shell.... 内容为test的邮件给user1
echo " test" |mail user1@g.cn -s "shell...."
给脚本执行权限
chmod a+x disk.sh
编写报警脚本
touch apache.sh
touch mysql.sh
touch disk.sh
chmod a+x apache.sh mysql.sh disk.sh
apache.sh
#!/bin/bash
#apache.sh
nc -w2 localhost 80
if [ $? -ne 0 ];then
echo "apache's 80 port is down,please restart apache process"|mail user1@g.cn -s "apache is shutdown"
service httpd restart
fi
mysql.sh
#!/bin/bash
#mysql.sh
nc -w2 localhost 3306
if [ $? -ne 0 ];then
echo "mysql 3306 port is down,please restart mysql process"|mail user1@g.cn -s "mysql is shutdown"
service mysqld restart
fi
查看磁盘状态命令 df
disk.sh
#!/bin/bash
#disk.sh
#取出df命令的结果第三行第四列的值
num = df |awk 'NR==3{print int($4)}'
if [ $num -gt 22 ]
then
echo "disk space is ${num}% , now > 22%" |mail user1@g.cn -s "disk space alerts"
fi
|
|
|