- Sendmail 패키지 설치
$> yum install -y sendmail sendmail-cf -
Sendmail 설정
- 발송 시 인증을 이용한 메일 발송으로 변경
$> vi /etc/mail/sendmail.mc ... TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN’)dnl ... define('confAUTH_MECHANISMS', 'EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 (생략)' ... - 외부에서 25번 포트 접속 허용하기
$> vi /etc/mail/sendmail.mc ... DAEMON_OPTIONS('Port=smtp, Name=MTA')dnl ... - 발송하는 호스트명 지정
$> vi /etc/mail/sendmail.mc LOCAL_DOMAIN('실제_발송할_도메인명')dnl - Sendmail 버전 숨기기
$> vi /etc/mail/sendmail.mc define('confSMTP_LOGIN_MSG')dnl - Sendmail 서비스 활성화 및 시작
$> chkconfig sendmail on $> chkconfig saslauthd on $> /etc/init.d/sendmail start $> /etc/init.d/saslauthd start
- 발송 시 인증을 이용한 메일 발송으로 변경
- 포트 확인
$> netstat -antp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 19466/sendmail - 접속 테스트
$> telnet localhost 25 mail from:발신계정 rcpt to:수신계정 data send test . quit (수신계정으로 메일 수신되는지 확인)
2022년 8월 19일 금요일
Centos5에서 Sendmail 구성하기
sendmail Trouble Shooting
Hosts 수정 (부팅 시 sendmail에서 진행이 지연되고 있을 때 진행)
1
$> vi /etc/hosts2
서버IP 호스트명 지정3
Ef) 1.2.3.4 test.co.kr test.co.krsendmail 로그 분석하기
메일로그 기본구조
| 로그항목 | 내 용 |
|---|---|
| From | 발신자 주소 |
| Size | 메시지의 바이트 크기 |
| Class | 메시지의 등급(낮을수록 우선순위 높음) |
| Pri | 시작 메시지의 우선순위 등급 |
| Nrcpts | 수신 메시지의 개수 |
| Msgid | 메시지 식별자(메시지 헤더) |
| Proto | 수신시 사용된 프로토콜(ESMTP / UUCP) |
| Relay | 메시지를 전달한 장치이름 |
| to | 수신자 리스트 |
| Delay | 발신에서 수신까지 걸린 시간 |
| Xdelay | 전송시도에 걸리는 시간(접속시간) |
| Mailer | 메시지를 전달하는 이름 |
| Stat | 전달상태 |
| Ctladdr | 메시지를 보낼 수 있는 사용자 |
| Dsn | 배달상태 통지 |
예제로그 설명
Feb 6 14:16:43 mail sendmail[15064]:k165Gg315062: to=1)test@test.co.kr,ctladdr=2)test@test123.co.kr(570/100), 3)Delay=00:00:00, 4)xdelay=00:00:00,5)mailer=esmtp,pri=104969, 6)relay=test.co.kr[1.2.3.4],dsn=2.0.0,7)stat=Sent(Message accepted for delivery)
- 메일을 받는 사용자는 test@test.co.kr
- 메일을 보낸 사용자는 test@test123.co.kr
- 메시지를 발송하는데 걸린시간은 0초,
- 전송시도에 걸린 시간은 0초
- Mailier는 esmtp이고
- 메시지를 전달하는 장치는 test.co.kr
- 메시지는 전송이 정상적으로 완료됨
procmailrc를 이용한 스팸메일 차단
- 패키지 설치
$> yum install procmail -y - 스팸메일 수신시 관리하는 계정생성
$> useradd spam-admin - 스팸차단 로그 생성
$> touch /var/log/procmail - /etc/procmailrc 파일 생성하기 (샘플)
$> vi /etc/procmailrc ########################################## # 수신 메일 제목을 기준으로 메일 차단하기 #Log file path LOGFILE=/var/log/procmail VERBOSE=no # System Path PATH=/usr/bin:/usr/local/bin:/bin SHELL=/bin/sh # Spam mail Blocking & Forward :0 * ? formail -x"From" -x"From:" -x"Sender:" \ -x"Reply-To:" -x"Return-Path:" -x"To:" /var/spool/mail/spam-admin # Based on spam lists :0 * ^Subject: .*[sS][eE][xX]|.*[Pp][Oo][rR][Nn]|.*[Vv][Ii][aA][gG][rR][aA]|.*[Dd][rR][uU][gG]|.*[pP][eE][nN][Ii][sS]|.*[mM][oO][rR][tT][aA][gG][eE].my new photo /var/spool/mail/spam-admin :0 * ^Subject: .*포.*르.*노|.*색.*골|.*야.*시|.*목.*록|.*리.*스.*트|.*성.*인|.*몰.*카|.*대.*출|.*보.*험|.*무.*료|.*부업|.*경품|.*만화|.*다이어트 /var/spool/mail/spam-admin :0 * ^Subject: .*(\{광|\[광|\(광|<광|廣-告|廣告|廣\ 告|廣\.告|=B1=A4=B0=ED|saSw7Q==?=|W7GksO1d|=BC=BA=C0=CE=B1=A4=B0=ED) /var/spool/mail/spam-admin :0 * ^Subject: .*(성인|성인정보|성인\ 광고|포르노|색골|야시시|몰카|포X노|투시|야동|페니스|경마|뽀르노|섹스|비아\.그라|카드연체|카드값대출|카드대출|카드빚|카드대납|스카이라이프|skylife) /var/spool/mail/spam-admin :0 * ^Subject:.(Re:.)*(Thank you!|Your details|Details|My details|Approved|Your application|Wicked screensaver|That movie) /var/spool/mail/spam-admin
Dovecot Trouble Shooting
- imap, pop3 포트 변경 시
$> vi /etc/dovecot.conf protocol imap { listen = *:변경할 포트 } protocol pop3 { listen = *:변경할 포트 } - 홈디렉토리 없는 사용자의 메일을 받고 싶을 때
$> $ vi /etc/dovecot.conf mail_location = mbox:/var/empty:INBOX=/var/spool/mail/%u:INDEX=MEMORY $ /etc/init.d/dovecot restart $ useradd -M -s /bin/false 계정명 - imap 로그인 시 로그인 되지 않고, Plaintext 메시지 출력시 (주석 해제한 다음에 dovecot 서비스 재시작)
$> vi /etc/dovecot.conf #disable_plaintext_auth = no - Centos 6.x 이상버전에서는 config파일 분리
- 설정파일 위치 : /etc/dovecot/dovecot.conf
- 해당 버전에서의 dovecot은 /etc/dovecot/conf.d/ 폴더에 추가 설정파일이 분산 저장됨
- 포트 변경 참조파일 : 10-master.conf
- Pop3 미 사용 참조파일 : 10-ssl.conf
- disable_plaintext 참조파일 : 10-auth.conf
- 메일경로 변경 참조파일 : 10-mail.conf
clamd설치 / Sendmail 연동하기
clamav 설치
1.Sendmail과 연동하기 위한 패키지 설치
$> yum install -y sendmail-devel
- clam바이너리 다운로드 - http://sourceforge.net/projects/clamav/files/clamav/0.97.8/clamav-0.97.8.tar.gz
- 바이너리 컴파일 & 설치
$> tar -zxvf clamav-0.97.8.tar.gz $> useradd -s /bin/false clamav $> cd clamav-0.97.8 $> ./configure --prefix=/usr/ --sysconfdir=/etc/ --enable-milter $> make;make install - 설정파일 변경 – Freshclam (엔진 업데이트)
$> $ vi /etc/freshclam.conf #Example ... UpdateLogFile /var/log/clamav/freshclam.log LogTime yes DatabaseMirror database.clamav.net NotifyClamd /etc/clamd.conf SubmitDetectionStats /etc/clamd.conf ... - 설정파일 변경 – Clamd (Clamav데몬)
$> vi /etc/clamd.conf LogFile /var/log/clamav/clamd.log LogTime yes LogSyslog yes PidFile /var/run/clamav/clamd.pid LocalSocket /var/run/clamav/clamd.sock FixStaleSocket yes TCPSocket 3310 TCPAddr 127.0.0.1 StreamMaxLength 100M User clamav PhishingSignatures yes PhishingScanURLs yes MaxFileSize 30M - 설정파일 변경 – Milter(SMTP와 연동)
$> vi /etc/clamav-milter.conf MilterSocket /var/run/clamav/clamav-milter.sock MilterSocketMode 666 FixStaleSocket yes User clamav PidFile /var/run/clamav/clamav-milter.pid ClamdSocket unix:/var/run/clamav/clamd.sock OnClean Accept OnInfected Quarantine OnFail Defer LogFile /var/log/clamav/clamav-milter.log LogTime yes - 파일 생성 및 권한 변경
$> mkdir /usr/share/clamav $> cd /var/log $> mkdir clamav $> cd clamav $> touch clamav-milter.log $> touch clamd.log $> touch freshclam.log $> cd /var/run $> mkdir clamav $> chown -R clamav.clamav /var/log/clamav $> chown -R clamav.clamav /var/run/clamav $> chown -R clamav.clamav /usr/share/clamav - 엔진 업데이트 & 프로세스 실행
$> freshclam $> /usr/sbin/clamav-milter - 정상적으로 실행할 경우
$> ps -ef | grep clam clamav 4242 1 0 15:37 ? 00:00:00 clamd clamav 4251 1 0 15:37 ? 00:00:00 clamav-milter
Sendmail연동
- /etc/mail/sendmail.mc 파일 열어서
$> vi /etc/mail/sendmail.mc ... INPUT_MAIL_FILTER(`clamav`, `S=local:/var/run/clamav/clamav-milter.sock, F=, T=S:4m;R:4m`) define(`confINPUT_MAIL_FILTERS`, `clamav`) ... *따음표(‘) 와 역슬래쉬(`)와 구분해야 되요 - sendmail 서비스는 freshclam 후에 구동되도록 설정이 필요.
$> chkconfig sendmail off - 자동으로 엔진업데이트를 하기 위해서는 freshclam 프로세스를 데몬형태로 띄우면 됨(conf파일 정책에 따라 2시간마다 한번씩 업데이트 시도함)
$> freshclam -d - /etc/rc.local에 아래 내용 추가
$> vi /etc/rc.local /usr/sbin/clamd /usr/sbin/clamav-milter freshclam -d $> /etc/init.d/sendmail start
Centos에서 POSTFIX설치하기
Centos6이후부터는 기본SMTP가 Sendmail에서 postfix로 변경되었습니다.
- Sendmail 패키지 삭제
$> yum erase sendmail -y - Postfix 패키지 설치
$> yum install postfix -y - Postfix 설정
vi /etc/postfix/main.cf mydomain = localhost (발송 호스트네임 기재) mynetworks_style = host (로컬에서만 발송가능 설정) mynetworks = 127.0.0.1, 192.168.0/24 (발송할 대역기재) smtpd_sasl_auth_enable = yes (인증라이브러리 연동) inet_interfaces = $myhostname (open relay차단, 설정 해제시 all 으로 변경) postfix,인증라이브러리 연동$> vi /usr/lib/sasl2/smtpd.conf pwcheck_method: saslauthd chkconfig postfix on chkconfig saslauthd on /etc/init.d/postfix start /etc/init.d/saslauthd start -
기본 Trouble Shooting
- 디렉토리 구조
- postfix 파일 디렉토리 : /var/spool/postfix
- incoming : 모든 메시지
- active : 배달 준비 중인 메시지
- deferred : 재전송 시도하는 메시지
- corrupt : 배달할 수 없는 메시지
- 데이터 관리
- 메일 발송 로그는 sendmail 과 동일하게 /var/log/maillog에 기재됨
- 메일 데이터는 /var/spool/mail/계정명
-
Queue관리
[root@localhost /]# mailq –> Queue에 쌓인 메일 확인 [root@localhost /]# postfix flush –> Queue 전체 지우기 [root@localhost /]# postsuper -d ALL deferred –> Queue메일 중 Deferred(지연발송메일) 만 삭제- 가상 도메인 세팅
$> vi /etc/postfix/main.cf virtual_alias_domain = test.com example.com (등록할 호스트명 기재) - Alias 설정
$> vi /etc/postfix/main.cf virtual_alias_maps = hash:/etc/postfix/virtual$> vi /etc/postfix/virtual postmaster@example.com postmaster info@example.com joe sales@example.com jane (메일주소) (실계정명) - 적용
[root@localhost /]# postmap /etc/postfix/virtual
- 가상 도메인 세팅
- 디렉토리 구조
centos6에서 dovecot 설치하기
- 활성화 서비스 설정
$> vi /etc/dovecot/dovecot.conf #protocols = imap pop3 lmtp 에서 주석 해제 후 사용할 서비스만 기재 Ef) protocols = imap pop3 #listen = *, :: 에서 listen = * 으로 변경 - 각 계정 메일 데이터 저장소 수동으로 설정
$> vi /etc/dovecot/conf.d/10-mail.conf mail_location = mbox:~/mail:INBOX=/var/spool/mail/%u:INDEX=MEMORY - SSL을 사용하지 않을경우 (해당 내용을 수정하지 않으면, 993/995번 자동으로 LISTEN)
$> vi /etc/dovecot/conf.d/10-ssl.conf #ssl = yes 에서 ssl = no 로 변경 - SSL 미사용시 암호화 설정 해제
$> vi /etc/dovecot/conf.d/10-auth.conf #disable_plaintext_auth = yes 에서 주석풀고 disable_plaintext_auth = no 로 변경
Centos5에서 dovecot 설치하기
Dovecot 설치 (centos 5.x버전)
- Dovecot 패키지 설치
$> yum install -y dovecot - Dovecot 설정
$> vi /etc/dovecot.conf#protocols = imap imaps pop3 pop3s 에서 사용할 서비스만 기재 Ef) protocols = imap pop3 listen = * 추가 - 서비스 활성화 후 포트 리슨 확인
[root@localhost /]# chkconfig dovecot on [root@localhost /]# /etc/init.d/dovecot start [root@localhost /]# netstat -antp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Addres State PID/Program name tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 2102/dovecot tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2102/dovecot - 접속테스트 (pop3)
$> telnet localhost 110 user test pass 암호 list (편지함 내역 확인) +OK 13 messages: 1 5081 retr 1 (편지 읽기) +OK 5081 octets
피드 구독하기:
덧글 (Atom)
adfit
AI들끼리 대화하기
ChatGPT, perplexity, Gemini... 많은 AI 서비스가 있고 서비스별로 다양한 엔진이 있죠. 문득 AI끼리 대화를 시켜보면 어떤 대화의 흐름을 이어갈까 궁금해졌습니다. 그래서 해보았습니다. 규 칙 나(사람)은 양쪽 AI에서...
-
perplexity에서 생성한 AI이미지 시작하는말 안녕하세요, 고니입니다. OS 계정이 root가 아닌 일반 계정에서 kubectl을 사용할 인증정보가 없기 때문에 사용할 수 없습니다. 이를 해결하기 위한 절차를 기술합니다. 작업절차 인증서 ...
-
Bottle 설치 - 리눅스에서 스타도전기. 에 적어두었던 Bottle 사용하다보니 아쉬운 이슈? 버그가 하나 있어요. 바로 한글 입력 문제인데 카카오톡에서 안녕하세요라고 입력하고 싶었는데 이렇게.... ㅠㅠ 해결할 수 있는 방법은 bott...
-
발생현상 pod 구동될때 Imageinspecterror 메시지를 출력하면서 구동되지 않는 문제 $> kubectl describe pod {{ pod명 }} ... Events ... Imageinspecterror docker data ...