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로 인코딩 되어 수신되며 링크에서 간단하게 디코딩이 가능합니다.

 

만약 계정을 생성하지 않거나 수신자의 아이디를 잘못입력하면 메일을 보낼 수 없습니다.

이상으로 메일 수신 테스트를 마치겠습니다.

감사합니다.