Linux服务器用户登录邮件通知设置

前一段时间购买了国外的VPS,因为价格便宜,所以就一下购买了三年的,但是让人意外的是,通过查看系统日志来看,有许多非法的尝试登陆的行为,仔细检查服务器的安全设置,发现是ssh登陆的端口为22,是ssh登陆的默认端口,给许多扫描工具提供了便利,于是修改之。但是这些恶意的扫描行为给我敲响了警钟,国外的小众的VPS不可能像大厂防护那么好,就算防护的好,由于系统的漏洞被别人恶意登陆了服务器也不是一件让人愉快的事情,于是就想设置服务器,让每次登陆服务器都给指定邮箱发送一封有关登陆信息的邮件,百度了一下,发现此类的信息并不多,所幸在CSDN找到了一篇参考文章。通过参考这篇文章,成功的设置了服务器的登陆提醒。

首先,笔者的服务器系统是CentOS,此方法在CentOS或者红帽系列下是能成功的,其他的linux版本请自行尝试。

一、安装 mailx 12.4 

1.下载mailx 12.4命令

wget http://nchc.dl.sourceforge.net/project/heirloom/heirloom-mailx/12.4/mailx-12.4.tar.bz2  

      2.解压

tar jxvf mailx-12.4.tar.bz2 

      3.编译

cd mailx-12.4  
make 

     4.如果编译失败请下载补丁

wget http://www.linuxfromscratch.org/patches/blfs/7.6/mailx-12.4-openssl_1.0.0_build_fix-1.patch 
patch -Np1 -i mailx-12.4-openssl_1.0.0_build_fix-1.patch  

      打好补丁之后继续执行make编译,此时一般都能成功的,特别注意的是,下载补丁请下载到mailx-12.4文件夹里。

5.安装mailx-12.4

make install UCBINSTALL=/usr/bin/install 

    6.创建mailx到mail的软连接命令

ln -s /usr/local/bin/mailx /bin/mail  

    7.创建mailx配置文件软连接

ln -s /etc/nail.rc /etc/mail.rc 

     8.检查

whereis mailx #查看安装路径

mailx -V #查看版本信息

二、配置外部邮箱mailx

1.使用的mailx属于服务端外部邮箱,需要将系统自带的postfix停止,postfix操作命令 (需要root权限)

# /etc/init.d/postfix status #查看开启状态  
  
# /etc/init.d/postfix start  #开启  
  
# /etc/init.d/postfix stop   #关闭  
  
# chkconfig postfix off     #开机不自启

     2.编辑mailx配置信息


vim /etc/mail.rc  


     3.按住i添加配置信息

set from=     
set smtp=  
set smtp-auth-user=  
set smtp-auth-password=  
set smtp-auth=login  

set from=xxx\@xx.com     (这里写发件邮箱,可以用163或者qq邮箱,新申请的qq邮箱要14天后才能使用SMTP,@前面要加’\’)

set smtp=smtp.163.com:25  (这里是163服务器的地址和端口,不同的服务器的地址不同,普通邮箱和企业邮箱的smtp地址都不同)

set smtp-auth-user=   和 set from= 写一样的

set smtp-auth-password=      ( 如果是企业邮箱直接写邮箱密码,如果是个人邮箱,要写 授权码。)

set smtp-auth-login=login  (固定的)

配置好后按esc:wq保存退出

4.命令测试邮件能否发送

echo "$(whoami) login at: $(date) ip address: $(w|sed -n '3p'|awk '{print$3}')" | mail -s root xxxxxx@qq.com 

注意:1)-s 后面不可以带 ‘test’ 参数     xxxxx.@qq.com  写你的收件邮箱
          2)发送成功却没有收到邮件,有可能邮件标题和内容不谨慎,被当成垃圾邮件

四、配置root用户登录邮箱通知

1.修改.bashrc文件配置,设置被通知邮箱

vi ~/.bashrc  

    在文件下面接着添加 :

if [ -f /etc/bashrc ]; then  
. /etc/bashrc  
fi  
echo "$(whoami) login at: $(date) ip address: $(w|sed -n '3p'|awk '{print$3}')" | mail -s root xxxxx@qq.com  

想通知几个人就在后面加几句

echo "$(whoami) login at: $(date) ip address: $(w|sed -n '3p'|awk '{print$3}')" | mail -s root xxxxx@qq.com

注意:在root用户编辑.bashrc文件就只对root用户登录起作用。上面通知邮箱,有ip和登录时间和登录用户的信息,也可以改成自己想要的模板。

   保存好配置文件退出后,断开ssh链接,然后重新用root用户(或者你设置邮箱通知的用户)ssh登录服务器。一般情况下很快就会收到服务器发的通知邮件。

   现在的各大邮箱每天都有发件上限哦,到了上限就不会发送。

此条目发表在linux分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。