telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 localhost.localdomain ESMTP Sendmail 8.13.8/8.13.8; Tue, 13 Apr 2010 22:54:04 +0900
Mail From: webmaster@test0.com
250 2.1.0 webmaster@test0.com... Sender ok
RCPT To: webmaster@test1.com
250 2.1.5
webmater@test1.com... Recipient ok
data
354 Enter mail, end with "." on a line by itself
sendmail tset.
.
250 2.0.0 o3DDs4NG012085 Message accepted for delivery
quit
221 2.0.0 localhost.localdomain closing connection
Connection closed by foreign host.


550 5.0.0 Access denied
vi /etc/hosts.allow
sendmail : ALL           => 추가


신고

작성자: 주인장 디지문
(http://www.digimoon.net/)

[출처] http://www.digimoon.net/blog/316

소스는 아래 사이트에서 구한다.
http://dovecot.org/
 

# wget http://dovecot.org/releases/1.1/dovecot-1.1.2.tar.gz
# tar xvfz dovecot-1.1.2.tar.gz
# cd dovecot-1.1.2
# ./configure --prefix=/usr --localstatedir=/var --with-pam --with-gssapi --with-mysql
# make
# make install
# cp /usr/etc/dovecot-example.conf /usr/etc/dovecot.conf
# groupadd -g 97 dovecot
# useradd -u 97 -g 97 -d /usr/libexec/dovecot -s /sbin/nologin dovecot



편집기로 환경설정 파일인 dovecot.conf 을 아래와 같이 내용 작성한다.
# vi /usr/etc/dovecot.conf
protocols = imap pop3
disable_plaintext_auth = no
ssl_disable = yes
protocol imap {
}
protocol pop3 {
}
auth default {
mechanisms = plain
passdb passwd {
}
passdb shadow {
}
userdb passwd {
}
user = root
}
plugin {
}
mail_privileged_group = mail




실행 커맨드는 아래와 같다.
# /usr/sbin/dovecot

아래와 같이 출력된다면 dovecot이 잘 올라온 상태이다.
[root@digimoon modules]# netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:50022               0.0.0.0:*                   LISTEN      18505/xinetd
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      18505/xinetd
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      18313/mysqld
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      3523/smbd
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      21245/dovecot
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      21245/dovecot
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      18505/xinetd
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      19307/sendmail: acc
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      3523/smbd
tcp        0      0 :::80                       :::*                        LISTEN      4562/httpd
udp        0      0 192.168.0.100:137           0.0.0.0:*                               3528/nmbd
udp        0      0 0.0.0.0:137                 0.0.0.0:*                               3528/nmbd
udp        0      0 192.168.0.100:138           0.0.0.0:*                               3528/nmbd
udp        0      0 0.0.0.0:138                 0.0.0.0:*                               3528/nmbd
udp        0      0 0.0.0.0:161                 0.0.0.0:*                               2832/snmpd
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING     5738801 21245/dovecot       /var/run/dovecot/dict-server
unix  2      [ ACC ]     STREAM     LISTENING     5738803 21245/dovecot       /var/run/dovecot/login/default
unix  2      [ ACC ]     STREAM     LISTENING     5738812 21245/dovecot       /var/run/dovecot/auth-worker.21246

unix  2      [ ACC ]     STREAM     LISTENING     1535445 28839/saslauthd     /var/run/saslauthd/mux
unix  2      [ ACC ]     STREAM     LISTENING     5976316 18313/mysqld        /tmp/mysql.sock
[root@digimoon modules]#


실행 스크립트는 아래와 같이 작성 (레드햇 계열)
# vi /etc/rc.d/init.d/dovecot
#!/bin/bash
#
#   /etc/rc.d/init.d/dovecot
#
# Starts the dovecot daemon
#
# chkconfig: - 65 35
# description: Dovecot Imap Server
# processname: dovecot
# Source function library.
. /etc/init.d/functions

test -x /usr/sbin/dovecot || exit 0

RETVAL=0
prog="Dovecot Imap"

start() {
        echo -n $"Starting $prog: "
    daemon /usr/sbin/dovecot
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/dovecot
    echo
}

stop() {
    echo -n $"Stopping $prog: "
    killproc /usr/sbin/dovecot
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/dovecot
    echo
}

#
#   See how we were called.
#
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  reload|restart)
    stop
    start
    RETVAL=$?
    ;;
  condrestart)
    if [ -f /var/lock/subsys/dovecot ]; then
        stop
        start
    fi
    ;;
  status)
    status /usr/sbin/dovecot
    RETVAL=$?
    ;;
  *)
    echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"
    exit 1
esac

exit $RETVAL
# chmod 700 /etc/rc.d/init.d/dovecot
# chkconfig --add dovecot
# chkconfig --level 345 dovecot on
# /etc/init.d/dovecot start|stop|restart



우분투용 init 스크립트는 아래와 같다.
( http://ubuntuforums.org/showthread.php?t=282688 )

# vi /etc/init.d/dovecot

#!/bin/sh
# Dovecot IMAP server

PATH=/sbin:/bin:/usr/sbin:/usr/bin

. /lib/lsb/init-functions
DISTRO=$(lsb_release -is 2>/dev/null || echo Debian)

case "$1" in
'start')
        log_daemon_msg "Starting Dovecot IMAP server..."
        /usr/sbin/dovecot
        RETVAL=$?
        log_end_msg 0
        ;;
'stop')
        log_daemon_msg "Stopping Dovecot IMAP server..."
        kill `cat /var/run/dovecot/master.pid`
        RETVAL=$?
        log_end_msg 0
        ;;
'restart')
        log_daemon_msg "Restarting Dovecot IMAP server..."
        $0 stop && $0 start
        RETVAL=$?
        log_end_msg 0
        ;;
*)
        echo "Usage: $0 { start | stop | restart }"
        RETVAL=1
        ;;
esac
exit $RETVAL

# chmod 700 /etc/init.d/dovecot
# update-rc.d dovecot defaults
# /etc/init.d/dovecot start|stop|restart
신고

중계 기능 차단 테스트 하는 부분에서 수신자의 e-mail을 지정한후 결과가 아래와 같이 나오는 경우가 있습니다.


550 5.7.1 < jslee@home.interpia98.net >... Relaying denied. IP name lookup failed [211.53.209.253]


이는 메일을 보내는 쪽의 ip를 도메인명으로 변환하는 reverse DNS 가 실패하면 메일을 거부하는 기능입니다.
이럴 경우 reverse DNS가 성공하는 곳에서 보내는 스팸은 중계할 수도 있습니다.

이런 메시지가 나오셨다면 /etc/mail/sendmail.cf 안에서 아래의 항목을 찾아 주석처리 해주시면 됩니다.

#R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}



[출처] http://grub.tistory.com/75?srchid=BR1http%3A%2F%2Fgrub.tistory.com%2F75
신고

아래 나열된 메시지들은 송신 불가시에 반송되는 NDR을 통해 볼 수 있는 에러코드입니다.

자주 볼 수 있는 항목에 대하여는 굵은 글씨로 표기하였습니다.
 

421 Server too busy.

; 수신측 서버의 응답지연. 수신서버의 트래픽등으로 메일을 수신 받지 못하는 상황에서 발송자에게 리턴 메일을 보냄.

421-Microsoft ESMTP MAIL Service, Version: 5.0.2195.5600 ready at Service not available, closing transmission channel

; MS사의 smtp 서버의 장애로 인해 메일을 수신받지 못하는 상황에서 리턴된 메시지.

421 4.3.2 Your IP(218.236.206.104) is filtered and this connection will be closed. You must register your IP to spammasters@hanafos.com By SpaceLee, the Lord of mail server.

; 우리쪽 (mail.hanafos.com) 서버로 메일을 발송시 필터링 조건에 위배되어 스패머로 인식되고 필터링 되어 발신자에게 리턴되는 메시지.

441 4.4.1 No answer from host

; 수신측 서버의 응답이 없어서 리턴된 메시지.

451 4.4.0 DNS resolving error

; 수신측 서버의 도메인을 못찾아 리턴된 메시지.

451 4.3.0 Other or undefined mail system status

; 수신측 메일 시스템의 프로토콜이 틀리거나 수신 smtp 서버가 아닐경우 리턴되는 메시지.

451 4.3.0 Temporary system failure. Please try again later.

; 수신 서버의 일시적인 장애로 인해 메일을 수신받지 못해 리턴된 메시지.

451 4.4.2 Bad connection (io timeout)

; 수신 서버의 응답이 없어서 응답시간이 초과 되어 리턴된 메시지.

451 Relay Server Not Ready.

; 수신측 서버에서 릴레이 기능이 안돼어 리턴된 메시지.

452 4.4.5 Insufficient disk space; try again later

; 수신서버의 디스크용량이 부족하여 메일을 수신받지 못해 리턴된 메시지.

452 4.4.5 ... Insufficient disk space; try again later

; 수신자(leoss@buffgame.com)의 메일함 용량이 부족하여 메일을 수신받지 못해 리턴된 메시지

500 Syntax Error, Command Unrecognized EHLO mo02.hanafos.com

; 발송자의 메일 발송기(아웃룩, 유도라 등등)에서 메일발송시 수신측 메일 서버에서 SMTP 명령어를 인식하지 못해 리턴된 메시지.

500 5.5.1 Command unrecognized: "XXXX mo02.hanafos.com"

; 수신서버가 SMTP 명령어를 인식 하지 못함. (위와 동일).

501 Denied domain name

; 도메인주소를 잘못 입력 or 수신측에서 도메인을 수신거부한 경우

501 5.1.8 Sender domain must exist(honorstech.com)

; 수신측 도메인(honorstech.com) 이 존재 하지 않아 리턴된 메시지.

502 Not implemented

; 수신측 서버가 smtp 명령어를 인식 하지 못해 리턴된 메시지.

505 Authentication required

; 수신측 서버가 릴레이 인증 등을 허용하지 않아 리턴된 메시지.

512 5.1.2 Bad destination system address

; 수신 서버의 장애나 네트웍 트래픽등으로 인헤 수신서버가 응답이 없을 때 리턴된 메시지.

------------------------------------------------------------------------------------

550 Requested action not taken: mailbox unavailable

; 수신자의 메일함을 찾지 못해 리턴된 메시지.

550 Mail is reject ( filtering reject )

; 수신 서버에서 발신자의 메일 주소나 IP를 필터링 하여 거부되어 리턴된 메시지.

550 Invalid recipient lobsterss@fernand.com

; 수신자 계정을 찾지 못해 리턴된 메시지 .

550 RCPT ERROR. Mailbox doesn't exist

; 수신자 메일함이 존재 하지 않아서 리턴된 메시지.

550 5.1.1 ... User unknown

; 수신자 (hkaprkss@jeill.co.kr)계정을 찾지 못해 리턴된 메시지.

550 5.1.1 Suspended user

; 수신자의 사용자의 계정이 중단 상태.

550 5.1.2 ... Unsupported mail destination

; 수신 서버가 응답이 지연되어 리턴된 메시지.

550 5.7.1 ... Relaying denied. IP name lookup failed [211.202.13.144]

; 수신 서버에서 발신자의 IP에 대해 릴레이 거부를 하여 메일을 보내지 못해 리턴된 메시지.

; 해외 메일서버의 경우 MAPS 에 등록이 되어 메일송신이 아주 불가능한 경우가 많으며 대부분 우리쪽 서버의 IP를 고정IP로 인식하지 않고 DIAL UP을 통한 유동IP로 인식하여 생기는 문제인데 MAPS에 제외처리를 요청하면 ISP를 통해 고정IP임을 확인하는 과정을 요구합니다. 거의 처리하기 힘든 상황이 되며 해당 Site로 발신이 가능한 다른 서버를 우회하여 relay 시켜야 배달이 가능합니다.

550 5.7.1 Unable to relay for lyc4144@hanafos.net

; 수신 서버에서 릴레이 거부를 하여 리턴된 메시지.

------------------------------------------------------------------------------------

553 sorry, your envelope sender is in my badmailfrom list

; 발신자의 메일 주소가 수신서버상에서 블랙리스트에 올라 거부되어 리턴됨.

553 sorry, that domain isn't in my list of allowed rcpt hosts

; 발신자의 메일 도메인주소 자체가 수신 서버에서 차단되어 리턴된 메시지.

553 sorry, your envelope sender is enlisted as spammer.

; 발신자의 메일 주소가 수신서버상의 스패머 리스트에 등록 되어 리턴된 메시지.

553-This target address is not our MX service

; 수신자의 주소가 수신서버에서 서비스 안하는 도메인일 경우 리턴된 메시지.

; 발신자의 도메인에 대해 수신서버에서 체크 하여 없는 도메인일 경우 리턴시킨 메시지.

553 5.0.0 We do not accept mail from spammers - If you have questions,please email admins@www.narun.net.

; 발신자의 메일 계정이 스패머로 수신서버에서 등록이 되어 리턴된 메시지.

553 5.0.0 Your message may contain the Win32.Klez worm!!- If you have questions,please email postmasters@ecweb-1.blueweb.co.kr.

; 발신자의 메일에서 Win32.Klez 라는 웜바이러스가 발견되어 리턴된 메시지.

553 5.1.8 ... Domain of sender address unisss@honorstech.com does not exist

553 5.3.0 ... spam

; 발송자의 계정이 수신서버 상에서 스패머로 등록이 되어 메일 수신 거부를 해서 리턴된 메시지

------------------------------------------------------------------------------------

554 1048035239.13309.hanmir accept failed. [code=-1]

; hanmir 서버에서 응답이 안돼어 리턴된 메시지.

554 : Recipient address rejected: Access denied

; 수신자가 발신자의 계정에 대해 수신 거부를 설정함.

554 delivery error: dd Sorry, your message to bk621845@yahoo.co.kr cannot be delivered. This account is over quota. - mta111.mail.yahoo.co.kr

; 수신자의 메일함 용량 초과로 인해 리턴된 메시지.

554 5.1.0 Sender Denied

; 발신자의 계정을 수신서버에서 수신 거부함.

554 5.3.0 Mail have traversed Too many hops. Reject it.

; 발신자가 메일을 보낼 때 동보메일로 수신자의 메일 계정을 수신서버의 제한량 이상 넣어 보내어 리턴된 메시지.

554 5.3.2 Rejected by mailbox host. REPLY:(250 ... Sender ok)
; 수신자가 발송자의 메일 계정에 대해 수신 거부를 하여 리턴된 메시지 .

554 5.3.2 Rejected by mailbox host. REPLY:(550 5.1.1 unknown or illegal alias: kgngs@samsung.com)

; 수신자가 발송자의 메일 계정에 대해 수신거부를 설정하여 리턴된 메시지. 


[출처] http://anelf.tistory.com/34?srchid=BR1http%3A%2F%2Fanelf.tistory.com%2F34

신고
메일을 주고 받을 수 있는 서비스인 SMTP를 구축하여, 자신만의 메일 도메인을 만들 수 있다.

사용 서비스 : Sendmail

1. Sendmail 및 dovecot 서비스 다운
 (yum install sendmail sendmail-cf dovecot)

2. 메일 서버 이름 설정
 1)  vi /etc/hosts
      서버ip주소    사용할 메일 서버 이름 추가
       ex)  143.248.xx.xx      abc.com
 2) vi /etc/mail/local-host-names 에 사용할 메일 서버 이름 추가
       ex) abc.com

3. 네트워크 서비스를 재가동 한다.
   service network restart

4. sendmail의 환경설정을 한다.
 1) vi /etc/mail/sendmail.cf 로 수정
  - Cwlocalhost   -> Cw메일서버이름 (반드시 붙여서!!!)
     ex) Cwlocalhost -> Cwabc.com
  - O DaemonPortOptions=Port=smtp, Addr = 127.0.0.1 , Name=MTA
    -> Addr = 127.0.0.1 부분만 삭제,
 
5. 외부 네트워크가 메일을 보낼 수 있게 허가해 줌.
 1) vi /etc/mail/access
   ' 외부 도메인(혹은 ip)    RELAY' 형식으로 추가함.
    ex) 143.248.xxx      RELAY
 2) makemap hash /etc/mail/access < /etc/mail/access 라고 터미널에 쳐서 RELAY를 적용시킴.

6. dovecot의 환경설정을 한다.
 1) vi /etc/dovecot.conf
   (1) 프로토콜 부분의 주석(#) 제거 (29행 쯤) 다음과 같이 되도록 수정
      protocol imap {
           listen = *:10143
           ssl_listen = *:10943
         }
      protocol pop3 {
           listen = *:10100
         }
     protocol managesieve {
           listen = *:12000
         }
    listen = *, [::]
   (2) 89행에 ssl사용 허가
      ssl =yes
   (3) 149행
      login_user = dovecot
   (4) 540행 쯤 imap세팅, 주석 제거
      login_executable = /usr/libexec/dovecot/imap-login
      mail_executable = /usr/libexec/dovecot/imap
   (5) 610행 쯤 pop3 세팅, 주석제거
      login_executable = /usr/libexec/dovecot/pop3-login
      mail_executable = /usr/libexec/dovecot/pop3
   (6) 780행 쯤, 주석제거
      auth_executable = /usr/libexec/dovecot/dovecot-auth

 7. 방화벽 제거
   25, 110, 143, 995, 993번 포트를 열어준다.

 8. 서버에 등록한 사용자 계정이 메일 계정으로 자동 등록된다.
   윈도우 outlook express나 리눅스 에볼루션으로 메일이 등록되었는지 테스트 해본다.
   에볼루션의 경우 다음과 같이 설정한다.
   (1) 신상정보 창에 전자메일 주소를 입력한다.
        이때 전자메일 주소는 리눅스에 등록된 "사용자 계정@서버메일주소" 가 된다.
          ex) kim@abc.com
   (2) 메일을 받음 창에서는 서버 종류를 pop으로 선택, 호스트는 서버 메일 주소, 사용자는 계정이름
         인증방법은 암호로 설정한다.
   (3) 메일을 보냄 창에서는 서버 종류를 SMTP로 선택하고, 호스트에 서버메일 주소를 입력한다.
   (4) 에볼루션 실행창이 뜨면 파일->온라인 작업을 선택한 후, naver나 daum 등의 이메일 주소로 편지를 발송해본다.
   (5) '보내고 받기'를 클릭하여 계정 암호를 친다. 편지가 전송되었을 것이다.
   (6) 네이버나 다음에서 사용자계정@서버메일주소로 편지를 발송한다.
   (7) 에볼루션을 실행한 후, 보내고 받기를 클릭한다. 편지가 와 있을 것이다.

9. 현재 문제:
  메일을 보낼 때, server에서 보안을 하지 않고 바로 SMTP로 작동하고 있다. 스팸메일의 유포지가 될 가능성이 있다고 함.
  따라서 보안이 필요.
  하지만 RELAY에서 외부 네트워크가 이 서버에서 메일을 발송하지 못하도록 되어 있는데 스팸 뿌릴수 있나?....
  잘 모르겠음 괜찮을듯.....???ㄷ
       

메일 계정만 등록할 때

-> [root@mail root]# useradd -M -s /bin/false 추가할계정

[출처] http://engi-agora.tistory.com/17?srchid=BR1http%3A%2F%2Fengi-agora.tistory.com%2F17
신고

telnet localhost 25로 헀을 때는 접속이 되지만

telnet 서버주소 25 헀을 때
telnet 서버주소 25  했을때
connection refused 되면

1. 방화벽에서 포트를 차단 하였는지 확인 후 25번 포트를 열어 주면 된다
2. /etc/mail/sendmail.cf 파일
O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA 
부분을 주석처리
신고

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

cannot open `/usr/share/sendmail-cf/m4/cf.m4': No such file or directory
에러 문구를 보게 된다면 sendmail-cf 패키지가 설치되어 있지 않은 경우다

yum install sendmail-cf
로 해결 할 수 있다
신고
1. sendmail 설치
$ yum install sendmail

2. SMTP 인증부분 활성화
$ vi /etc/mail/sendmail.mc 수정
로컬 이외 relay 허용 - 아래 부분 주석 처리 (앞에 dnl 추가)
#DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
   =>dnl DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
stmp 인증 - 아래 부분 주석 제거 (앞의 dnl 삭제)
   #dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
   #dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
   => TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
       define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

$ m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

3. sendmail config 수정
$ vi  /etc/mail/sendmail.cf
# SMTP daemon options
#O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA
O DaemonPortOptions=Port=smtp, Name=MTA
O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5 PLAIN

FW 지 시자 : FW 지시자는 메일의 최종수신지 설정파일에 경로를 지정하는 곳으로서 sendmail 8.9.x 버전까지는 sendmail.cw 의 값으로 되어있지만 8.10.x 이후 버전부터는 local-host-names 파일로 설정되어 있다. 독자들이 사용하는 배포판에 포함된 센드메일의 버전을 확인후 local-host-names 로 변경해주자.
Fw/etc/mail/local-host-names
MaxMessageSize : 첨부파일을 포함한 메일 메시지 최대크기 제한 설정 부분
메일의 크기가 20M를 넘는다면 메일은 발신되지 못한다.
O MaxMessageSize=20000000
MinQueueAge : 임시보관 최소 시간 설정 부분
뒤 에서 언급하게 될 Timeout 설정값 이전에 적용될 우선적인 옵션으로 발송에 실패한 메일이 다시 재발송을 시도하기까지의 대기 시간을 설정 한다.. 기본값은 30분이며 기본적으로 서버부하를 줄이기 위해 # 주석처리 되어있지만 필요로 한다면 사용하여도 무방하다.
O MinQueueAge=30m
LogLevel : sendmail 이 가동되면서 발생되는 로그의 기록에 관련한 레벨을 설정
O LogLevel=9
각종 TimeOut 값 : 센드메일 서버의 각종 Timeout 값을 설정.
사용자가 샌드메일 서버에 접속하여 작업하는 최대시간을 1분으로 설정했다.
#O Timeout.initial=5m
O Timeout.connect=1m
#O Timeout.aconnect=0s
#O Timeout.iconnect=5m
#O Timeout.helo=5m
#O Timeout.mail=10m
#O Timeout.rcpt=1h
#O Timeout.datainit=5m
#O Timeout.datablock=1h
#O Timeout.datafinal=1h
#O Timeout.rset=5m
#O Timeout.quit=2m
#O Timeout.misc=2m
#O Timeout.command=1h
O Timeout.ident=0
#O Timeout.fileopen=60s
#O Timeout.control=2m
- 특정한 사유로 인해 메일이 전달되지 못하고 mqueue 에보관되고 있을시 보관 기간을 지정하는것으로 기본값은 5일이다. 이기간을 넘길경우 메일은 자동적으로 최초 발신지로 되돌려져 반송처리가 된다.
O Timeout.queuereturn=5d
#O Timeout.queuereturn.normal=5d
#O Timeout.queuereturn.urgent=2d
#O Timeout.queuereturn.non-urgent=7d
#O Timeout.queuereturn.dsn=5d
- 역시 특정한 사유로 인해 메일이 전달되지 못할시 최초 발신자에게 메일이 전달되지 못하고 있음을 경고하는 경고메일이 발송 되기까지의 대기 시간을 지정하며 기본값은 4시간이다.
O Timeout.queuewarn=4h
#O Timeout.queuewarn.normal=4h
#O Timeout.queuewarn.urgent=1h
#O Timeout.queuewarn.non-urgent=12h
#O Timeout.queuewarn.dsn=4h
#O Timeout.hoststatus=30m
#O Timeout.resolver.retrans=5s
#O Timeout.resolver.retrans.first=5s
#O Timeout.resolver.retrans.normal=5s
#O Timeout.resolver.retry=4
#O Timeout.resolver.retry.first=4
#O Timeout.resolver.retry.normal=4
#O Timeout.lhlo=2m
#O Timeout.auth=10m
#O Timeout.starttls=1h

4. sendmail 재시작
$ service sendmail restart
    Shutting down sm-client:    [  OK  ]
    Shutting down sendmail:     [  OK  ]
    Starting sendmail:          [  OK  ]
    Starting sm-client:         [  OK  ]

5. sendmail 테스트
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 linux.net ESMTP Sendmail 8.13.8/8.13.8; Tue, 11 Mar 2008 17:36:47 -0400

6. dovecot 설치
$ yum install dovecot

7. dovecot config 수정
$ vi  /etc/dovecot.conf
수정해야 할 부분은 딱 두 군데 뿐이다. (protocols, listen)
다음에 표시된 빨간색 protocols, listen을 참고 삼아서 똑 같이 수정한다.
# protocols = imap imaps pop3 pop3s
protocols = pop3
# listen = [::]
listen = *

8. dovecot 서비스 재시작
$ service dovecot restart
Stopping Dovecot Imap:                                  [  OK  ]
Starting Dovecot Imap:                                    [  OK  ]

9. 네트워크 확인
pop3, smtp 관련 포트가 주석이 제거되어 있는지 확인 후, 주석이 있으면 제거한다.
$ vi /etc/services
   smtp        25/tcp        mail
   smtp        25/udp       mail
   pop3        110/tcp       pop-3        # POP version 3
   pop3        110/udp      pop-3

10. dovecot pop3 서비스 테스트
$ telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.


[추가정보] 가상 도메인 서비스 도메인 등록
   네임서버를 운영하며 가상 도메인 서비스를 운영할 때 도메인을 등록하여 사용할 경우
   필요한 파일.
$ vi /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
your.domain.com
$ service sendmail restart
$ /etc/rc.d/init.d/xinetd restart

[조치]
1. Outlook에서 메일을 보낼 때, 다음과 같은 에러가 발생하는 경우,
     Relaying denied. IP name lookup failed
[서버]
# saslauthd를 찾아서 체크한다.
$ntsysv
# saslauthd 실행한다.
$ service saslauthd start
    Starting saslauthd:         [  OK  ]
[outlook]
아래 이미지와 같이 체크한다.

신고
  1. 2017.04.14 18:32

    비밀댓글입니다

처음으로 메일 서버를 구축 하신다는 전제 하에서 작성을 하도록 하겠습니다.

설치될 패키지는 아래와 같습니다.

Kernel - 2.2.19-6.2.1smp
Sendmail - sendmail-8.11.4-1kr.i686.rpm
Libsasl - libsasl-1.5.24-3kr.i686.rpm
Openssl - openssl-0.9.6-1kr.i686.rpm 


- 직접 서버에서 메일 보내기

직접 서버에서 메일 보내는 것을 보면 아래와 같습니다.


telnet mail.inempire.com 25 -> smtp포트로 접근합니다.
Trying 211.53.209.19...
Connected to mail.inempire.com.
Escape character is '^]'.
220 mail.inempire.com ESMTP Sendmail 8.11.0/8.11.0; Wed, 8 Aug 2001 21:17:02 +0900
helo inempire.com -> 메일서버의 접근함을 알립니다.
250 mail.inempire.com Hello IDENT:jslee@[211.53.209.253], pleased to meet you
mail from :  jslee@inempire.com  -> 메일 발신지를 입력합니다.
250 2.1.0  jslee@inempire.com...  Sender ok
rcpt to :  jslee@home.interpia98.net  -> 메일 수신지를 입력합니다.
250 2.1.5  jslee@home.interpia98.net...  Recipient ok
data -> email의 내용을 입력한다는 명령입니다.
354 Enter mail, end with "." on a line by itself
helo -> 보내질 메일을 내용을 입력합니다.
this is testing mail
. -> 내용입력이 끝났음을 알립니다.
250 2.0.0 f78CHJr14741 Message accepted for delivery
-> 메일 내용이 제대로 접수되었습니다.
quit -> 빠져나갑니다.
221 2.0.0 mail.inempire.com closing connection -> 서버접속이 종료되었습니다.
Connection closed by foreign host.

메일이 발송되는 과정을 보면 다소 복잡해 보일 수 있지만 error가 생겼을 원인을 찾는데 도움이 될수 있습니다.


- 메일서버 설치전에 확인하기

² 설치 하기 전에 준비 사항

메일 서버를 구축 하기 전에 몇 가지 확인 하셔야 할 사항이 있습니다.

우선 port가 open되어있는지 확인해 보도록 하겠습니다.


[ root@inempire  mail]# vi /etc/inetd.conf 

pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d


위의 부분이 주석 처리가 되어있다면 주석을 없애시기 바랍니다.

이제 sendmail과 imap 이 설치되어 있는지 여부와 버전이 어떻게 되는지 알아 보도록 하겠습니다.


[ root@inempire  mail]# rpm -qi sendmail

Name : sendmail Relocations: (not relocateable)
Version : 8.9.3 Vendor: Red Hat, Inc.
Release : 20 Build Date: 2000년 02월 18일 금요일 오전 7시 51분 28초
Install date: 2001년 07월 05일 목요일 오후 8시 35분 21초 Build Host: porky.devel.redhat.com
Group : System Environment/Daemons Source RPM: sendmail-8.9.3-20.src.rpm
Size : 477388 License: BSD
Packager : Red Hat, Inc.
Summary : A widely used Mail Transport Agent (MTA).
[ jslee@home  jslee]$ rpm -qi imap
Name : imap Relocations: (not relocateable)
Version : 2000 Vendor: Red Hat, Inc.
Release : 2.6 Build Date: Wed 01 Nov 2000 05:48:55 AM KST
Install date: Thu 08 Feb 2001 03:02:28 PM KST Build Host: porky.devel.redhat.com
Group : System Environment/Daemons Source RPM: imap-2000-2.6.src.rpm
Size : 2033651 License: BSD
Packager : Red Hat, Inc.
URL :  http://www.washington.edu/imap/
Summary : Server daemons for IMAP and POP network mail protocols.


위에서 보시듯 지금 sendmail-8.9.3 과 imap-2.6 이 설치되어 있는 것을 확인 하실수 있습니다.

만약 아래와 같은 메시지가 나오셨다고 하셔도 걱정 하지 않으셔도 됩니다. 설치하면 됩니다.
[ root@inempire  rpm]# rpm -qi imap
package imap is not installed


-----설치하기(Sendmail, Imap)

지금부터의 작업은 root권한으로 작업하셔야 합니다.
우선 인터넷 제국 ftp사이트에서 있는 파일을 받아 오도록 하겠습니다.
받을 패키지는
Kernel - 2.2.19-6.2.1smp
Sendmail - sendmail-8.11.4-1kr.i686.rpm
Libsasl - libsasl-1.5.24-3kr.i686.rpm
Openssl - openssl-0.9.6-1kr.i686.rpm
입니다. 


[ root@inempire  Sendmail]# ncftp home.interpia98.net
NcFTP 3.0.0 beta 21 (October 04, 1999) by Mike Gleason ( ncftp@ncftp.com ).
Connecting to 211.53.209.253...
ProFTPD 1.2.2rc1 Server (Welcome to Internet Empire FTP archive in Korea) [home.interpia98.net]
Logging in...
Welcome to Internet Empire FTP archive in Korea ( ftp.interpia98.net )

한명이 동시에 2세션 이상을 접속하는 것을 제한합니다.
Don't do ftp-ing more than 2 connections simultaneously.

정기점검(PM): Every Tuesday 05:00 ~ 07:00 +0900 (KST)

NEWS:
2001/03/30 Apache 1.3.19
2001/04/03 MySQL 3.23.36
2001/05/15 MySQL 3.23.38, PHP 4.0.5, J2SE, Tomcat

If connection problem, please e-mail to  yhchung@inempire.com
Anonymous access granted, restrictions apply.
Logged in to home.interpia98.net.
ncftp / > cd pub/Sendmail/
ncftp /pub/Sendmail > ls
8.10.2/ 8.11.2/ 8.11.3/ 8.11.4/ libsasl/ openssl/
ncftp /pub/Sendmail > cd 8.11.4
ncftp /pub/Sendmail/8.11.4 > ls
sendmail-8.11.4-1kr.i686.rpm sendmail-doc-8.11.4-1kr.i686.rpm
sendmail-cf-8.11.4-1kr.i686.rpm
ncftp /pub/Sendmail/8.11.4 > get *
sendmail-8.11.4-1kr.i686.rpm: 253.46 kB 4.53 MB/s
sendmail-cf-8.11.4-1kr.i686.rpm: 240.96 kB 6.30 MB/s
sendmail-doc-8.11.4-1kr.i686.rpm: 512.81 kB 5.79 MB/s
ncftp /pub/Sendmail/8.11.4 > cd ..
ncftp /pub/Sendmail > cd libsasl/
ncftp /pub/Sendmail/libsasl > ls
libsasl-1.5.24-3kr.i686.rpm
ncftp /pub/Sendmail/libsasl > get *
libsasl-1.5.24-3kr.i686.rpm: 308.53 kB 6.34 MB/s
ncftp /pub/Sendmail/libsasl > cd ..
ncftp /pub/Sendmail > ls
8.10.2/ 8.11.2/ 8.11.3/ 8.11.4/ libsasl/ openssl/
ncftp /pub/Sendmail > cd openssl
ncftp /pub/Sendmail/openssl > ls
openssl-0.9.5a-2kr.i386.rpm openssl-0.9.6-1kr.i686.rpm
ncftp /pub/Sendmail/openssl > get openssl-0.9.6-1kr.i686.rpm
openssl-0.9.6-1kr.i686.rpm: 1.44 MB 5.98 MB/s
ncftp /pub/Sendmail/openssl > quit

설치 순서는 Openssl->Libsasl->Sendmail의 순서로 진행을 하겠습니다.

[ root@inempire  Sendmail]# rpm -ivh openssl-0.9.6-1kr.i686.rpm
error: Macro %__spec_install_post\ has empty body
Preparing... ########################################### [100%]
1:openssl ########################################### [100%]
[ root@inempire  Sendmail]# rpm -ivh libsasl-1.5.24-3kr.i686.rpm
error: Macro %__spec_install_post\ has empty body
Preparing... ########################################### [100%]
1:libsasl ########################################### [100%]
[ root@inempire  Sendmail]# rpm -Uvh sendmail-*
error: Macro %__spec_install_post\ has empty body
Preparing... ########################################### [100%]
1:sendmail ########################################### [ 33%]
2:sendmail-cf ########################################### [ 66%]
3:sendmail-doc ########################################### [100%]


이제 설치가 끝났습니다. 생각보다 쉽게 끝났지요?
만일 설치시 아래와 같은 의존성에 관한 에러가 난다면
[ root@inempire  Sendmail]# rpm -Uvh sendmail-8.11.4-2kr.i686.rpm
error: failed dependencies:
libsasl >= 1.5.18 is needed by sendmail-8.11.4-2kr
의존성에 상관없이 설치 하시면 됩니다.
명령은
[ root@inempire  Sendmail]# rpm -Uvh sendmail-8.11.4-2kr.i686.rpm -nodeps

위와 같이 뒤에 -nodeps옵션을 사용하시면 됩니다.
주의 하실 것은 무조건 -nodeps를 사용한다고 다 해결되는 것은 아닙니다. 의존성을 무시하고 설치를 하는것이기 때문에 주의를 하셔야 합니다.

---------Sendmail 설정하기(서버)

Sendmail 8.9버전 이하에서는 설정 파일이 /etc안에 있지만 Sendmail 8.10버전 이상 부터는 /etc/mail 안에 모든 설정 파일이 있습니다.(Redhat 6.2기준)
가장 기본적으로 도메인이 powerjinsun.com이라는 한 개의 도메인만 운영한다는 가정에서 설정을 하도록 하겠습니다. Virtualtables나 alias설정은 나중에 추가로 설명을 해드리도록 하겠습니다.
구 버전의 경우에는 sendmail.cf파일안에 지정을 하였지만 8.9이하에서는 /etc/sendmail.cw에서 8.10이후 버전의 경우엔 /etc/mail/local-host-names파일안에 적어 따로 관리하기 쉽도록 되어있습니다.
아래와 같이 도메인을 지정하시면 됩니다.


[ root@inempire  mail]# vi /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
powerjinsun.com


구축을 하실 때 이 부분에 메일서버의 도메인을 적어 주시는 분들도 계시는데 이 부분은 계정@도메인으로 메일을 주고 받는 경우 도메인에 대한 지정을 하는 부분입니다.예로 메일서버가 mail.powerjinsun.com과 같은 경우 local-host-names 파일 안에 mail.powerjinsun.com으로 기재를 하신다면  jslee@mail.powerjinsun.com 으로 메일을 주고 받으시는 것이 됩니다. 원하시는 설정이  jslee@powerjinsun.com 이라면 powerjinsun.com만 적으시면 되겠지요..

자 이것으로 기본적인 설정은 끝났습니다. 너무 간단한가요? 8.10버전 이상부터는 간단히 메일을 주고 받는 기능만 한다면 /etc/mail/local-host-names파일만 수정을 하시면 가능합니다.


---------테스트 해보기

메일을 주고 받을 준비가 다되었습니다.
바르게 작동이 되는지 확인해 보도록 하겠습니다.

① 데몬 구동 

: 위의 과정대로 하셨다면 데몬을 재구동 시키셔야 합니다. 그래야 설정 내용이 적용 됩니다.
데몬 구동은 아래와 같이 하시면 됩니다. (sendmail과 inetd 데몬을 restart시키겠습니다)


[ root@inempire  mail]# /etc/rc.d/init.d/inet restart
Stopping INET services: [ OK ]
Starting INET services: [ OK ]
[ root@inempire  mail]# /etc/rc.d/init.d/sendmail restart
Shutting down sendmail: [ OK ]
Starting sendmail: [ OK ]


② 25,110번 포트 접근 확인 

: 이제 포트로 접근이 정상적으로 이루어 지는지 확인해 보도록 하겠습니다. Sendmail 은 25, pop3는 110번 포트를 일반적으로 사용합니다.


*Sendmail 포트 확인(25)
[ root@inempire  mail]# telnet localhost 25
Trying 127.0.0.1...
Connected to inempire.
Escape character is '^]'.
220 localhost.localdomain ESMTP OopsSMTP 8.11.4-1 Fri, 13 Jul 2001 19:45:46 +0900 C=kr

*POP 3 포트확인(110)
[ root@inempire  mail]# telnet localhost 110
Trying 127.0.0.1...
Connected to inempire.
Escape character is '^]'.
+OK POP3 inempire v7.59 server ready
user jslee
+OK User name accepted, password please
pass ******
+OK Mailbox open, 0 messages
quit
+OK Sayonara
Connection closed by foreign host.


위와 같은 결과가 나오셨다면 포트 접근은 제대로 이루어진 것 입니다.
그런데 아래와 같이 계정이름만 입력을 하셨는데 foreign host로 close되셨다면 Imap이 설치가 안된것입니다. 


[ root@inempire  mail]# telnet localhost 110
Trying 127.0.0.1...
Connected to inempire.
Escape character is '^]'.
user jslee
passConnection closed by foreign host.


설치가 되었는지 확인을 해보면


[ root@inempire  mail]# rpm -qi imap
error: Macro %__spec_install_post\ has empty body
package imap is not installed


위와 같이 패키지가 설치 되지 않은 것을 확인하실수 있습니다.
파일은 ftp://home.interpia98.net/pub/Imap/ 에서 받아서 설치를 하시면 됩니다. 설치하는 방법은
rpm -ivh imap-4.5-4.i386.rpm
위와 같이 설치를 하시면 됩니다.

③ 인증 기능 확인 

: sendmail 8.10버전부터는 openssl+libsasl을 이용하여 인증기능이 있습니다. 인증기능이 작동이 된다면 스패머로 등록되어 IP blocking과 같은 피해를 보는 일도 없겠죠..(개인적으로는 꼭 설치해야 되는 패키지라고 생각됩니다.)

아래와 같이 25번 포트로 접근하여 확인해 보도록 하겠습니다.


[ root@inempire  mail]# telnet localhost 25
Trying 127.0.0.1...
Connected to inempire.
Escape character is '^]'.
220 localhost.localdomain ESMTP OopsSMTP 8.11.4-1 Fri, 13 Jul 2001 20:25:22 +0900 C=kr
ehlo inempire.com
250-localhost.localdomain Hello IDENT: root@inempire  [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250-AUTH LOGIN PLAIN
250 HELP


④ 메일 전달 과정 확인 

: 메일이 전달 되는 과정이 나타난다면 어디서 문제인지 파악 할 수가 있습니다. 확인하는 방법은 아래와 같습니다. 

[ root@inempire  mail]# sendmail -vt
TO :  jslee@inempire.com
From :  jslee@powerjinsun.com
Subject : testing mail
test
jslee@inempire.com...  Connecting to mail.inempire.com. via esmtp...
220 mail.inempire.com ESMTP Sendmail 8.11.0/8.11.0; Fri, 13 Jul 2001 21:00:44 +0900
>>> EHLO localhost.localdomain
250-mail.inempire.com Hello IDENT:root@[210.124.122.158], pleased to meet you
250-ENHANCEDSTATUSCODES
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ONEX
250-ETRN
250-XUSR
250 HELP
>>> MAIL From: SIZE=81
250 2.1.0 ... Sender ok
>>> RCPT To:
250 2.1.5 ... Recipient ok
>>> DATA
354 Enter mail, end with "." on a line by itself
>>> .
250 2.0.0 f6DC0ir10989 Message accepted for delivery
jslee@inempire.com...  Sent (f6DC0ir10989 Message accepted for delivery)
Closing connection to mail.inempire.com.
>>> QUIT
221 2.0.0 mail.inempire.com closing connection


위와 같이 결과가 나왔다면 메일이  jslee@inempire.com 에게 전달이 정상적으로 이루어진것입니다.


² 그 외의 설정 부분(virtusertable,alias,access)

virtusertable

: 일반적으로 메일 서버에 계정을 추가 할 경우 “adduser 계정” 으로 사용자를 추가하여 만듭니다. 하지만 메일서버에 여러 개의 도메인이 있을 경우엔 관리를 다르게 해 주어야 합니다.
예를 들면, webmaster,sales와 같은 계정을 메일 사용자가 다 요구를 한다면 계정을 추가 하는 방법이라면 한 사용자만 webmaster,sales을 사용할 수가 있습니다. 그렇게 되면 다른 사용자들은 불만이 생기겠죠.. 이럴 경우 virtusertable을 이용하여 메일 서버에 운영중이 여러 개의 도메인에 같은 계정으로 메일을 사용할수 있도록 해줍니다.

설정을 해보도록 하겠습니다.

메일 서버에 powerjinsun.com과 inempire.neo-chan.net의 두개의 도메인이 운영중일 경우  webmaster@powerjinsun.comwebmaster@inempire.neo -chan.net 와 같이 webmaster 계정을 둘다 요구를 한다는 가정하에서 설정하도록 하겠습니다.

- server 에서
도메인 설정은 /etc/mail/local-host-names에 아래와 같이 되어있습니다.


[ root@inempire  mail]# cat /etc/mail/local-host-names
# local-host-names - include all aliases for your machine here.
powerjinsun.com
neo-chan.net


가장 중요한 virtusertable 설정을 하도록 하겠습니다.


[ root@inempire  mail]# vi /etc/mail/virtusertable

################################################################
# VIRTUAL USER TABLE configuration
###############################################################
# 작성: 김정균  http://www.oops.org
#
# 이 file은 virtual user table을 설정하는 file이다.
# 실제로 없는 계정을 mapping 할수 있으며, 같은 이름 역시
# domain 별로 다르게 mapping 할수 있다.
#
# 하나의 alising mail을 두 계정이나 메일 address로 forwarding
# 하기 위해서는 aliases를 이용해야 한다
#
# file 작성후
# /etc/mail 에서 "./makemap.sh virt"
# 명령을 실행 해 줘야 한다.
#


Alias

: alias는 같은 메일을 여러명이 동시에 받고 싶을 경우 설정을 하면 됩니다. 포워딩과 같은 기능을 합니다.
예를 들어 설명을 드리면  jslee@powerjinsun.com 의 메일을 inempire, interpia의 계정자에게도 전달 하고자 할 때 사용을 합니다.
설정파일은 /etc/mail/aliases에서 설정을 하시면됩니다. 


[ root@inempire  mail]# vi /etc/mail/aliases

######################################################################
# SENDMAIL Alias configuration
######################################################################
# 번역 : 김정균  http://www.oops.org
#
# @(#)aliases 8.3 (Berkeley) 3/10/00
#
# 이 file에 있는 Aliase들은 Mail로 부터 header를 확장시키는 것은
# 아니다. 다만 /bin/mail 또는 network상에 보여지는 것일 뿐이다.
#
# >>>>>>>>>> 이 파일을 변경한 후에 sendmail에서 적용
# >> 주의 >> 시키기 위해서는 반드시 "newaliases" 명령을
# >>>>>>>>>> 실행해 줘야 한다.
#
# 기본 system aliases -- 이것들은 반드시 있어야 한다.
MAILER-DAEMON: postmaster
postmaster: root

# General redirections for pseudo accounts.
bin: root
daemon: root
games: root
ingres: root
nobody: root
system: root
toor: root
uucp: root
# Well-known aliases.
manager: root
dumper: root
operator: root

# trap decode to catch security attacks
decode: root

# root로 오는 메일을 받을 사람을 지정.
#root: marc

jslee: inempire, interpia
~
~

~
"aliases" 40L, 990C written
[ root@inempire  mail]# newaliases
/etc/mail/aliases: 15 aliases, longest 18 bytes, 175 bytes total


Access
Sendmail 8.9 이하의 버전에서는 메일을 주고 받을 곳에 대해서 하나하나 access파일에 지정을 했었지만 8.10버전 이상에서는 인증기능이 있어 특별한 경우가 아니라면 수정하실 필요가 없습니다. 지금 설정을 하려는 access파일은 특정한 곳의 메일을 거부할경우 사용을 하려고 합니다.
예로 aaa.com에서 오는 메일을 거부 하고 싶다면


[ root@inempire  mail]# vi /etc/mail/access

######################################################################
# SENDMAIL RELAY configuration
######################################################################
# 작성 : 김정균  http://www.oops.org
#
# 자세한 사항은 /usr/lib/sendmail-cf/README 를 참고하십시오.
# access 파일을 고친 이후에는
#
# /etc/mail에서 "./makemap.sh access"
# 명령으로 갱신해 주어야 합니다.
# 참고로 일부 relay 를 풀어 주기 위해서 sendamil.cf 를 변경
# 하는 사람들이 있는데 이럴 경우 spamer 들의 표적이 되어 다
# 른 메일 서버로 부터 reject 을 당할수가 있으니 sendmail.cf
# 를 변경하여 전체 relay 를 푸는 일은 하지 말기 바랍니다.
#
# cyberspammer.com REJECT
# sendmail.org OK
# 128.32 RELAY
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY

aaa.com REJECT

"access" 25L, 823C written
[ root@inempire  mail]# ./makemap.sh access
makemap : access.db update OK


위의 세가지 설정은 hosting서비스를 하는 경우나 계정이 많은 경우 상황에 맞게 사용하시면 됩니다.

한가지 주의 하실 점은 /etc/mail파일을 보시면


[ root@inempire  mail]# ls
Makefile access.db aliases.db domaintable.db local-host-names sendmail.cf virtusertable
access aliases domaintable helpfile makemap.sh* sendmail.mc virtusertable.db 


뒤에 확장자가 db가 붙는 파일이 있는데 access, virtusertable, alias, domailtable을 수정한후엔 db에 꼭 적용을 시켜야 합니다.
Access의 경우는 ./makemap.sh access
Virtusertable의 경우는 ./makemap.sh virt
Alias의 경우는 newaliases 와 같은 명령으로 db에 적용을 시킵니다.
실제로 cat access.db와 같이 명령을 내려 확인해 보시면 


[ root@inempire  mail]# cat access.db
a?h^6;OI嶠兪RELAYlocalhost.localdomain症?EJECTaaa.com惺阻?ELAY127.0.0.1


위와 같이 글씨가 깨져 나오는 것을 확인할 수가 있습니다.
변경이나 수정작업이 있은 후에는 db에 적용시키는 것을 잊지 마시기 바랍니다.


------Ø SPAM MAIL test해보기

: 스패머로 등록이 되어 통보를 받기 전에 미리 예방을 하는 것이 중요합니다. 우선 내 메일 서버가 중계 기능을 하는지 테스트 해보도록 하겠습니다.

ü 사이트 에서 테스트 하는 법
http://www.whchang.com/netprg/is -relay.pl
에서 메일 서버의 IP(혹은 도메인)를 넣은 후 정검 버튼을 누른후 

mail.powerjinsun.com : relay NOT permited

와 같은 문구가 나온다면 중계기능을 하고 있지 않다는 것입니다.

ü 직접 25포트로 접근하여 확인하는 방법


[ root@inempire  /root]# telnet mail.powerjinsun.com 25
Trying 210.124.122.158...
Connected to mail.powerjinsun.com.
Escape character is '^]'.
220 localhost.localdomain ESMTP OopsSMTP 8.11.4-1 Mon, 16 Jul 2001 02:05:42 +0900 C=kr
helo inempire.com
250 localhost.localdomain Hello IDENT: root@mail.powerjinsun.com  [210.124.122.158], pleased to meet you
mail from :  opcenter@inempire.com
250 2.1.0  opcenter@inempire.com...  Sender ok
rcpt to :  jslee@home.interpia98.net
550 5.7.1  jslee@home.interpia98.net  ... Relaying denied
quit
221 2.0.0 localhost.localdomain closing connection
Connection closed by foreign host.

테스트 하는것에 대해 간단하게 설명을 드리자면 아래와 같습니다.

telnet mail.powerjinsun.com 25 -> 메일 서버의 25번 포트로 접근을 합니다.

Helo inempire.com -> inempire.com에서 접근을 시도하였습니다.

Mail from :  opcenter@inempire.com  -> 메일의 발신지를 알립니다.

Rcpt to :  jslee@home.interpia98.net  -> 메일의 수신지를 알려줍니다.

위의 테스트 내용에서 보셔야 할 부분은 가장 하단의 Relaying denied라고 결과가 나와야 합니다. 

결과에 대해 다시 설명을 하면  opcenter@inempire.com 이라는 내 메일서버에 있지 않은 계정이 접근을 하여  jslee@home.interpia98.net 에게 메일을 발송하려고 하는데 중계거부를 하고 있습니다. 이런 메시지가 나온다면 중계 기능을 하고 있지 않은 것입니다.

만약 

Recipient ok 

위의 결과가 나온다면 중계 기능을 하고 있는 것입니다.

중계기능을 하고 있다면 sendmail을 8.10이상으로 업그레이드 하시고 openssl+libsasl을 설치 하시기 바랍니다. 

l 주의할점

중계 기능 차단 테스트 하는 부분에서 수신자의 e-mail을 지정한후 결과가 아래와 같이 나오는 경우가 있습니다.


550 5.7.1 <  jslee@home.interpia98.net  >... Relaying denied. IP name lookup failed [211.53.209.253]


이는 메일을 보내는 쪽의 ip를 도메인명으로 변환하는 reverse DNS 가 실패하면 메일을 거부하는 기능입니다.
이럴 경우 reverse DNS가 성공하는 곳에서 보내는 스팸은 중계할 수도 있습니다.

이런 메시지가 나오셨다면 /etc/mail/sendmail.cf 안에서 아래의 항목을 찾아 주석처리 해주시면 됩니다.

#R $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}


--SPAM 중계 메일 등록이 된경우

스패머로 등록이 된 경우는 위에서 이야기를 한것처럼 sendmail upgrade와 인증기능을 설치하는 것도 중요하지만 이미 등록되어있는 스패머 리스트에 삭제 되는것도 중요합니다.
아래의 사이트에 등록이 되어있는지 확인후 되어있다면 관리자에게 삭제 요청을 하시기 바랍니다.
http://mail -abuse.org/cgi-bin/nph-rss 

본자료의 출처는  http://notice.inempire.com/sendmail -install2.doc 입니다. 

신고

+ Recent posts

티스토리 툴바