sendmail, dovecot 트러블슈팅
에러 코드는 /var/log/maillog에서 출력되는 메세지입니다.
1.
Apr 18 15:31:03 hostname sm-mta[70305]: NOQUEUE: connect from [clientip]
Apr 18 15:31:04 hostname sm-mta[70305]: 43I6V30N070305: [clientip] did not issue MAIL/EXPN/VRFY/ETRN during connection to MSP-v4
=> dovecot에서 587포트(startTLS)설정을 하였지만, sendmail에 ssl인증서를 명시하지 않았을 때
해결법
vi /etc/mail/sendmail.mc
# ubuntu만 테스트를 진행하였습니다.
# ssl인증서 추가 (letsencrypt기준입니다.)
dnl define(`confCACERT_PATH', `/etc/letsencrypt/live/[domain]')dnl
dnl define(`confCACERT', `/etc/letsencrypt/live/[domain]/fullchain.pem')dnl
dnl define(`confSERVER_CERT', `/etc/letsencrypt/live/[domain]/fullchain.pem')dnl
dnl define(`confSERVER_KEY', `/etc/letsencrypt/live/[domain]/privkey.pem')dnl
2. openssl s_client -connect [domain.com]:587 -starttls smtp 테스트에서 auth login이 안될 때
587포트로 startTLS로 mail계정에 로그인할 때 접속이 안되는 에러입니다.
read R BLOCK
helo [domain.com]
250 domain.com Hello [serverip], pleased to meet you
auth login
504 5.3.3 AUTH mechanism login not available
이런 경우는
# ubuntu
define(`confAUTH_MECHANISMS', `LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
TRUST_AUTH_MECH(`LOGIN PLAIN DIGEST-MD5 CRAM-MD5')dnl
# centos
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
를 추가하여 똑같이 m4로 conf생성후 재시작합니다.
성공시
read R BLOCK
helo [domain.com]
250 domain.com Hello [serverip], pleased to meet you
auth login
# base64로 암호회됨
334 VXNlcm5hbWU6 # id를 입력합니다
qwesad # 계정 id를 base64로 암호화해서 넣습니다.
334 UGFzc3dvcmQ6 # 비밀번호를 입력합니다
asdsad # 마찬가지로 passwd를 암호화해서 입력합니다.
235 2.0.0 OK Authenticated
3. 계정이 맞는데 auth login이 안될때, testsaslauthd -r [domain.com] -u [user] -p [passwd]에 connect() : No such file or directory가 출력될 때
가장먼저 saslauthd가 설치되어있는지 확인합니다.
설치가 되어있고 정상작동하는데도 안되면
vi /etc/default/saslauthd
# 제일 아랫줄에 추가
START=yes
# 재시작
systemctl restart saslauthd
4. sendmail에서 smtp 소켓을 이미 사용중이라 할때
Apr 18 11:41:58 hostname sm-mta[47027]: daemon MSP-v4: problem creating SMTP socket
Apr 18 11:42:03 hostname sm-mta[47027]: NOQUEUE: SYSERR(root): opendaemonsocket: daemon MSP-v4: cannot bind: Address already in use
ubuntu의 dovecot의 기본설정은 모든 conf를 실행시킵니다.
설치시 dovecot-submissiond을 같이 하셨다면
vi /etc/dovecot/dovecot.conf
# !include_try /usr/share/dovecot/protocols.d/*.protocol # 주석처리
!include_try /usr/share/dovecot/protocols.d/imapd.protocol
!include_try /usr/share/dovecot/protocols.d/pop3d.protocol
# ... 기타 필요한 데몬 기입
으로 같은 포트를 사용하는 submission을 없애고 sendmail에 포트를 다시 매칭시켜줍니다.
5. sendmail "My unqualified host name (foo.bar) unknown; sleeping for retry"
vi /etc/hosts
# 127.0.0.1의 alias를 한줄로 적으면 됩니다.
127.0.0.1 localhost localhost.localdomain foo.bar
6. imap 연결 중 디렉터리 퍼미션 오류
Apr 18 10:17:26 hostname dovecot: imap(user)<37056><DT/xu1QWlq5zRFfI>: Error: mkdir(/home/user/mail/.imap) failed: Permission denied (euid=1001(user) egid=1001(user) missing +w perm: /home/user/mail, we're not in group 0(root), dir owned by 0:0 mode=0775)
해결법
먼저 /home/user 디렉터리가 있는지 확인합니다.
useradd 명령어 실행 시 그룹을 mail로 지정해주고, 홈디렉터리도 만들어주면 됩니다.
centos의 계정생성 스크립트는 아래에 있고
2024.04.16 - [OS/Linux] - sendmail로 메일 수신하기
sendmail로 메일 수신하기
sendmail을 사용하여 메일을 송신할 때 임의의 주소를 적어 보내도 보내지지만 수신을 할 때에는 mail 계정이 있어야 합니다. 그리고 dns의 mx레코드를 사용하여 도메인을 사용하여 메일수신을 하도
engineer1.tistory.com
ubuntu의 계정생성은 adduser [user] --ingroup mail로 홈디렉터리를 생성과 group을 mail로 지정해줍니다.
이상입니다.