OS/Linux
sendmail로 메일 수신하기
엔지니어1
2024. 4. 16. 11:52
sendmail을 사용하여 메일을 송신할 때 임의의 주소를 적어 보내도 보내지지만 수신을 할 때에는 mail 계정이 있어야 합니다.
그리고 dns의 mx레코드를 사용하여 도메인을 사용하여 메일수신을 하도록 설정합니다.
1. 계정 만들기
아래는 메일의 계정을 만드는 스크립트입니다.
#!/bin/bash
echo
echo -n -e "ID : "
read id
echo -n -e "PW : "
read pw
echo
echo -n -e "[ ID : $id ] [ PW : $pw ] OK? [y/n] : "
read answer
if [ "$answer" = "y" ] || [ "$answer" = "Y" ]; then
useradd -G nogroup -s /bin/bash "$id"
# 입력한 id값으로 계정을 생성해줍니다.
echo "$pw" | /usr/bin/passwd --stdin "$id"
# 명령어 한 줄로 계정의 패스워드를 설정합니다.
else
exit 1
fi
echo "$id@도메인 $id" >> /etc/mail/virtusertable
# 도메인을 수정해주세요.
# ex) echo "$id@domain.xyz $id" >> /etc/mail/virtsertable
# 새로 생성한 계정을 /etc/mail/virtusertable에 추가합니다.
# 계정에 추사용자가 사용할 도메인으로 설정합니다.
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
# makemap을 사용하여 virtusertable파일을 DB화 합니다.
chsh -s /bin/bash "$id"
# 생성한 계정의 쉘을 chsh명령어를 이용하여 계정의 쉘을 /bin/bash로 변경하여 로그인도 가능하게 해줍니다.
service sendmail restart
# 모든 설정 완료 후 Sendmail 서비스를 재시작 해줍니다.
스크립트를 파일로 만들어 chmod를 사용하여 권한을 775로 수정하고 ./스크립트이름 을 사용하여 실행합니다.
2. mx레코드 생성
gcp의 dns서비스를 기준으로 mx레코드를 생성하면
A레코드로 mail.domain.com을 생성한 뒤 mx레코드에 등록합니다.
3. 수신 테스트
access에 지정된 메일도메인으로 메일을 송신하면
vim /var/spool/mail/[userid]
에 수신된 메일을 확인할 수 있습니다.
메시지의 형태는 base64로 인코딩 되어 수신되며 링크에서 간단하게 디코딩이 가능합니다.
만약 계정을 생성하지 않거나 수신자의 아이디를 잘못입력하면 메일을 보낼 수 없습니다.
이상으로 메일 수신 테스트를 마치겠습니다.
감사합니다.