Linux.mail.Postfix.발송전용메일서버

..·2022년 12월 5일
0

linux

목록 보기
1/2

발신전용 메일서버 구축 방법

요구조건

1. 기존 수/발신 메일서버가 존재(DNS : MX 서버가 있음)	
2. 순수한 발신전용 : 수신은 받지 않음(모니터링 시스템용도)
3. 통계 필요

설치

rocky linux 8 설정

 #dnf 업데이트 : 속도가 느려서 중도 yum으로변경
 yum -y update
 yum -y install postfix

호스트 네임변경

 hostnamectl set-hostname mailtest.test.co.kr

DNS설정

 #기존 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

postfix설정

# 도메인설정
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

postfix 서비스 시작

systemctl enable --now postfix.service

내부DNS 수정

자기자신 도메인으로 발송하기 위해 내부 DNS에 MX값을 외부 DNS MX값과 동일하게 한다

외부DNS 수정

TXT레코드 "v=spf1 ip4:발신전용메일서버IP include:_IP대역이포함된레코드(기존메일서버) ~all"

구글메일 및 네이버 발송(외부 메일발송)

  • PTR 레코드(Reverse DNS)등록
사용하는 회선(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

cron 전날 통계 메일발송결과 받기

#root 계정 / 계정이 잠기면 발송 안되어서 zabbix로 모니터링 권장
crontab -e 
00 01 * * * perl /usr/sbin/pflogsumm -e -d yesterday /var/log/maillog | mail -s '발송전용 메일서버(`hostname`) 어제 통계' 받을사람 메일주소

zabbix로 통계보기

  • zabbix 에이전트 설치
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
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

  • 대시보드 작성

profile
...

0개의 댓글