1. 기존 수/발신 메일서버가 존재(DNS : MX 서버가 있음)
2. 순수한 발신전용 : 수신은 받지 않음(모니터링 시스템용도)
3. 통계 필요
#dnf 업데이트 : 속도가 느려서 중도 yum으로변경
yum -y update
yum -y install postfix
hostnamectl set-hostname mailtest.test.co.kr
#기존 DNS삭제
nmcli connection modify eth0 -ipv4.dns 192.168.0.200
#DNS 설정
nmcli connection modify eth0 ipv4.dns 8.8.8.8
#DNS 추가
nmcli connection modify eth0 +ipv4.dns 192.168.0.100
#네트워크 적용
nmcli con up eth0
# 도메인설정
sed -i 's/#myhostname = host.domain.tld/myhostname = mailtest.test.co.kr/g' /etc/postfix/main.cf
# 다른서버에서 접속 가능한 서비스 0.0.0.0:25
sed -i 's/^inet_interfaces = localhost/inet_interfaces = all/g' /etc/postfix/main.cf
# smtp 허용 IP
sed -i 's/#mynetworks = 168.100.189.0\/28, 127.0.0.0\/8/mynetworks = 192.168.0.0\/24, 172.16.0.0\/16/g' /etc/postfix/main.cf
firewall-cmd --permanent --zone=public --add-service=smtp
firewall-cmd --reload
systemctl enable --now postfix.service
자기자신 도메인으로 발송하기 위해 내부 DNS에 MX값을 외부 DNS MX값과 동일하게 한다
TXT레코드 "v=spf1 ip4:발신전용메일서버IP include:_IP대역이포함된레코드(기존메일서버) ~all"
사용하는 회선(ISP)업체에 PTR 등록하기
예) SK브로드밴드 : domain@skbroadband.com(02-6266-6551 / 02-6266-2488)
첨부서류 : 사업자등록증, 인버스도메인신청서
주소 : abuse@naver.com
내용 : 에러메시지와 함께 메일발송(메일가능한 네이버메일, 또는 실제 메일서버)
yum -y install mailx
cat "테스트내용" | mail -s "테스트제목" testuser@test.com
mail -s "test" xxxxx@naver.com > 발송실패
mail -s "test" xxxxx@gmail.com > 발송실패
dnf -y install postfix-perl-scripts bc
※ bc : 계산 (`1024 * 1024 | bc` = 1048576)
perl /usr/sbin/pflogsumm -d yesterday /var/log/maillog
perl /usr/sbin/pflogsumm -d today /var/log/maillog
#root 계정 / 계정이 잠기면 발송 안되어서 zabbix로 모니터링 권장
crontab -e
00 01 * * * perl /usr/sbin/pflogsumm -e -d yesterday /var/log/maillog | mail -s '발송전용 메일서버(`hostname`) 어제 통계' 받을사람 메일주소
rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/8/x86_64/zabbix-release-6.2-1.el8.noarch.rpm
dnf -y install zabbix-agent2 zabbix-agent2-plugin-mongodb
sed -i 's/^Server=127.0.0.1/Server=자빅스서버IP/g' /etc/zabbix/zabbix_agent2.conf && grep '^Server=' /etc/zabbix/zabbix_agent2.conf
sed -i 's/^ServerActive=127.0.0.1/ServerActive=자빅스서버IP/g' /etc/zabbix/zabbix_agent2.conf && grep '^Server' /etc/zabbix/zabbix_agent2.conf
systemctl enable --now zabbix-agent2
zabbix 에이전트 sudo 권한 설정
파일 : https://raw.githubusercontent.com/nicehyukiv/my1/main/zabbix/postfix/zabbix_postfix
echo "zabbix ALL=NOPASSWD:/usr/bin/mailq,/usr/sbin/pflogsumm" > /etc/sudoers.d/zabbix_postfix
chmod 440 /etc/sudoers.d/zabbix_postfix
출처 : https://github.com/rafael747/zabbix-postfix
zabbix 에이전트 active 파라미터 설정
파일 : https://raw.githubusercontent.com/nicehyukiv/my1/main/zabbix/postfix/zabbix_postfix.conf
vim /etc/zabbix/zabbix_agent2.d/zabbix_postfix.conf
---------------------zabbix_postfix.conf--------------
UserParameter=pf.mailq, sudo /usr/bin/mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]'
UserParameter=pf.received, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 received | cut -f1 -d"r"
UserParameter=pf.delivered, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 delivered | cut -f1 -d"d"
UserParameter=pf.forwarded, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 forwarded | cut -f1 -d"f"
UserParameter=pf.deferred, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 deferred | cut -f1 -d"d"
UserParameter=pf.bounced, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 bounced | cut -f1 -d"b"
UserParameter=pf.rejected, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 rejected | cut -f1 -d"r"
UserParameter=pf.rejectwarnings, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 "reject warnings" | cut -f1 -d"r"
UserParameter=pf.held, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 held | cut -f1 -d"h"
UserParameter=pf.discarded, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 discarded | cut -f1 -d"d"
UserParameter=pf.bytesreceived, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 "bytes received" | cut -f1 -d"b"|sed -e 's/k/\*1024/g' -e 's/m/\*1048576/g' -e 's/g/\*1073741824/g' |bc
UserParameter=pf.bytesdelivered, sudo /usr/sbin/pflogsumm -e -d today /var/log/maillog | grep -m 1 "bytes delivered" | cut -f1 -d"b"|sed -e 's/k/\*1024/g' -e 's/m/\*1048576/g' -e 's/g/\*1073741824/g' |bc
zabbix 내 서버 등록시 템플릿은 zabbix agent active
zabbix 서버에 호스트 등록 및 템플릿 등록하기
파일 : https://raw.githubusercontent.com/nicehyukiv/my1/main/zabbix/postfix/template_postfix.xml
수정전 출처 : https://github.com/rafael747/zabbix-postfix