搭建Postfix-Devocot郵件伺服器詳細步驟
阿新 • • 發佈:2018-11-11
環境準備:CentOS6.5伺服器,安裝了MySQL5.6.23
指令碼準備:系統報警shell指令碼
1.克隆之前安裝好的CentOS系統,注意需要修改網絡卡配置資訊
注意點:(1)修改網絡卡的引數HWaddr為ifconfig -a 出現的一樣(原HWaddr是之前克隆的,沒有更新為新的)
(2) 執行命令
rm -rf /etc/udev/rules.d/70-persistent-net.rules
(3)修改網路DNS,在重啟機器,就可以正常上網
2.檢視主機是否安裝有sendmail服務,若有需要解除安裝
yum list installed | grep sendmail rpm -qa | grep sendmail rpm -e sendmail-8.14.4-9.el6_8.1.x86_64
3.安裝postfix,並配置
yum list | grep postfix
yum -y install postfix.x86_64
配置檔案
vi /etc/postfix/main.cf
需要修改以下地方
*myhostname* //主機名 myhostname = mail.dingguanyi.com *mydomain* //使用郵件域 mydomain = dingguanyi.com //mydomain 設定本地網路的郵件域 *myorigin* //外發郵件時發件人的郵件域名 myorigin = $mydomain //在通過Postfix傳送郵件的時候,如果From欄位不完整,Postfix會根據myorigin的值將地址補全為*@mail.100p.com,此處可以填$mydomain 或者 $myhostname *埠* //埠掃描監控全部的埠 inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost #inet_interfaces = localhost *mydestination* //可接受郵件地址域名 mydestination = $myhostname,$mydomain //mydestination指定了postfix在收到這些域名地址為目標的郵件時,作為接受方收下郵件。如果收到的郵件既不符合轉發規則,又不符合接受規則,則拒絕收信。 *mynetworks* //需要收發的客戶端的地址 mynetworks = 0.0.0.0 //mynetworks指定了本地網路的IP段,預設只包含主機自己,你可以新增需要收發的客戶端的地址。
啟動服務,檢視埠
service postfix start
netstat -lnp | grep :25
4.安裝dovecot,並配置
檢視已經安裝dovecot
需要配置三個檔案如下
vi /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp
mail_location = mbox:/var/mail:INBOX=/var/mail/%u ---新增在配置檔案最後
vi /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
vi /etc/dovecot/conf.d/10-ssl.conf
ssl = no
啟動服務,檢視埠
service dovecot restart
netstat -lnp | grep :110
5.新增兩個使用者,測試postfix和dovecot的安裝配置情況,由於需要訪問到mail許可權組的檔案,所建使用者需要分配mail組
useradd -g mail user1
useradd -g mail user1
passwd user1
passwd user2
cmd視窗測試postfix和dovecot登入情況
telnet 192.168.119.138 25
telnet 192.168.119.138 110
6.在電腦安裝postfix客戶端,並配置賬號,在客戶端測試兩個賬戶互發郵件
至此郵件服務已經搭建好了。
7.安裝nc服務,安裝httpd服務。
yum -y install nc.x86_64
8.將報警指令碼放置在使用者目錄下,並執行指令碼測試報警郵件是否正常傳送
#!/bin/bash
#warn.sh
#伺服器執行狀態預警指令碼
#------------------web-----------------------
nc -w 3 localhost 80 &>/dev/null
if [ $? -eq 0 ];then
str="apache web status Running!!!"
else
str="apache web status Shuting!!!"
fi
echo $str > temp.del
#------------------mysql-----------------------
nc -w 3 localhost 3306 &>/dev/null
if [ $? -eq 0 ]; then
str="mysql status Running!!!"
else
str="mysql status Shuting!!!"
fi
echo $str >> temp.del
#------------------disk-----------------------
ds=`df|awk '{if(NR==2){print int($5)}}'`
if [ $ds -lt 45 ]; then
str="disk space is $ds%, less than 45%!!!"
else
str="disk space is $ds%, greater than 45%!!!!"
fi
echo $str >> temp.del
#------------------disk-----------------------
use=`free -m|awk '{if(NR==2){print int($3*100/$2)}}'`
if [ $use -lt 50 ]; then
str="men space is $use%, less than 50%!!!"
else
str="men space is $use%, greater than 50%!!!"
fi
echo $str >> temp.del
cat temp.del|mail -s 'linux service status' [email protected]
rm -rf temp.del
9.使用root使用者,給報警指令碼設定定時任務,可以看到關於伺服器的預警資訊實時傳送給使用者郵箱了。
crontab -e
crontab -l
service crond start
service crond status