달력

122020  이전 다음

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  

'Sendmail'에 해당되는 글 4건

  1. 2010.11.01 pop3 110포트 안열릴때...
  2. 2009.05.19 센드메일 설정 3
  3. 2009.05.19 sendmail 설정 2
  4. 2009.05.19 sendmail 설정 1
/etc/rc.d/init.d/dovecot start

vi /etc/sysconfig/iptables 에서 110번 포트 열기

/etc/rc.d/init.d/iptables restart

vi /etc/xinetd.d/pop3 에서 disabled = no 로 수정

/etc/rc.d/init.d/xinetd restart

/etc/rc.d/init.d/sendmail restart

/etc/rc.d/init.d/saslauthd start

/etc/services 에서 110포트 주석해제

위 같이 하고 #telnet localhost 110

했을시 접속화면이 뜨면 성공..

안뜨면 구글링을 더하세요 ㅎㅎ

'Sendmail' 카테고리의 다른 글

pop3 110포트 안열릴때...  (0) 2010.11.01
센드메일 설정 3  (0) 2009.05.19
sendmail 설정 2  (0) 2009.05.19
sendmail 설정 1  (0) 2009.05.19
Posted by 낭군

댓글을 달아 주세요

센드메일 설정 3

Sendmail 2009. 5. 19. 23:33

여러분들이 Linux를 설치하게 되면 sendmail은 자동으로 설치 된다.

자 확인을 한번 해보자. rpm으로 설치된 프로그램을 확인하는 명령어가 기억나는가??

[root@rootshell root]#rpm -q sendmail
sendmail-8.9.3-20

여러분들의 시스템에는 sendmail이 설치되어 있는 것이다.

만약 sendmail이 설치 되지 않았다면 여기로 가서 다운을 받자.

이 문서는 알짜 레드햇 배포판 6.2버젼의 SendMail을 바탕으로 만들어 졌으며
여러분들의 시스템에 sendmail이 설치되어 있는 것으로 간주하고 이 장에서는
설정 방법에 대해서만 알아 보도록 하겠다. 지금까지 많은 강좌를 공부해 온
여러분은 sendmail설치 쯤은 간단하게 해결할 만큼 내공이 상승되어 있을 것이다.

$1. SendMail 설정

SendMail설정에 앞서 간단하게 메일이 보내지고 도착하는 원리에 대해서
알아보고자 한다.

1)SendMail(이메일)전송의 원리

+프로토콜
여러분들은 이메일 계정을 아웃룩익스프레스를 통해서 설정할 때 다음과 같은
단어들을 보았을 것이다. (아직 한번도 아웃룩익스프레스에서 이메일 계정을
생성해 보지 않은 사람은 이장을 보고나서 계정을 한번 생성시켜 보라.)
      
SMTP (simple mail transfer protocol) : 메일을 보낼 때 사용되는 프로토콜.
POP3 (post office protocol) : 우체국처럼 메일을 받을 때 사용되는 프로토콜.
IMAP (internet mail protocol) : 메일을 받을 때 사용되는 프로토콜.
      
본인도 처음에 아웃룩익스프레스로 계정을 생성할 때 요것들이 몬 뜻인지를
몰라 헤메인 기억이 있다. 위의 것들은 프로그램이 아니다.(헷갈리지 말것)
여러분들에게 익숙한 TCP/IP와 같이 메일을 전송하기 위한프로토콜들이다.
      
+프로그램
MUA (Mail user agent) : 메일을 보내기 위해 사용되는 프로그램. 예) outlook ....
MTA (Mail transfer agent) : 메일을 전달받아 이를 외부로 전달해 주는 프로그램.
(ex. sendmail)
간단한 메일 전달 과정 소개A가 (MUA)를 사용해서 B에게 메일을 보내면
MTA(sendmail)가 SMTP를 이용하여 B가 사용하는 메일 서버에 전달 된다. 그러면
B는 POP3를 이용하여 메일서버에 존재하는 메일을 로컬로 가지고 가서 확인한다.
만약 A와 B가 같은 동일한(하나의) 메일 서버에서 서로 메일을 주고 받을 경우에는,
메일이 MTA로 전달 되는 것이 아니라 MDA (mail delivery agent)로 전달이 된다.

요것들은 프로토콜이 아니라 프로그램이다.(위의 것과 개념을 헷갈리지 말것)

이해가 좀 됐는가? 그림으로 한번 확인해 보자.


+----------+               MTA                +----------+
| ServerA  |--------------------------------->| ServerB  |
+----------+               SMTP               +----------+
     |                                              |
     |                                              |  
     | MUA                                          |POP3,IMAP  
     |                                              |
     |                                              |    
+----------+                                   +----------+
| ClientA  |                                   | ClientB  |
+----------+                                   +----------+

tip)SendMail은 보안에 취약성을 드러내고 있다. 그래서 요즘은 qMail이라는
프로그램도 많이 쓰인다.

   2)sendmail 설정

    -imap프로토콜 설정

여기서는 프로토콜을 pop3대신에 imap을 쓰도록 하겠다.
[root@rootshell root]# vi /etc/inetd.conf
/imap  <--패턴매치입니다.
#pop-2  stream     tcp    nowait    root    /usr/sbin/tcpd  ipop2d
#pop-3  stream     tcp    nowait    root    /usr/sbin/tcpd  ipop3d  
요부분을 주석처리
imap  stream     tcp    nowait    root    /usr/sbin/tcpd imapd      
요부분을 주석제거


    -/etc/services 확인

[root@rootshell root]# vi /etc/services
/imap  <--패턴매치입니다.
imap2              143/tcp            imap   # Interim  Mail  Access  proto v2
imap2              143/udp            imap  
이 부분의 설정을 확인해 줍니다.

자 포트가 열려 있는지 확인해 봅시다.
[root@rootshell root]# telnet localhost imap
Trying 127.0.0.1...
telnet unable to connect to remote host: 연결이 거부됨

[root@rootshell root]# telnet localhost pop-3
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'

우리는 방금 pop프로토콜을 주석처리하고 imap프로토콜의 주석을 제거 하였다.
그러나 서비스가 거부되고 있다. 왜 그런가?

[root@rootshell /root]# /etc/rc.d/init.d/sendmail  stop
shutting down sendmail                                 [ok]
[root@rootshell /root]# /etc/rc.d/init.d/sendmail start
starting sendmail                                      [ok]

그렇다. 데몬 설정 파일을 변경했으니 데몬을 재실행해 주어야 한다.

데몬 재실행 이후에 다시 시도해 보자.
[root@rootshell root]# telnet localhost imap
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'

[root@rootshell root]# telnet localhost pop-3
Trying 127.0.0.1...
telnet unable to connect to remote host: 연결이 거부됨


자 이제 포트가 열렸다. 메일을 한번 보내보자.
    -메일 보내기

자기 자신에게 메일을 보내보자.
[root@rootshell root]# mail root
Subject: test     <--제목입니다.
hi test           <--본문내용입니다.
.                 <--글마침 표시입니다.
Cc:               <--참조 입니다.  (주)메일을 함께 읽을 메일 주소를 적어 주는
                     부분입니다.

다른 콘솔로 로그인해서 메일을 확인해 보자.
login:root
passwd:xxxxxxxxxx
You have a new mail
[root@rootshell root]# mail
Mail version 8.1 6/6/93.   type  ?  for   help
"var/spool/mail/root": 1 message 1 new
> 1 root@localhost.local   Tue  Jun  17  15:30  13/369   "hi"

메일이 도착했는가? 축하한다.

tip) var/spool/mail/root 각 계정별로 메일의 임시 저장소이다. 이 파일에
메일이 임시 저장되었다가 메일을 확인하게 되면 ~/mailbox 각 계정의
홈디렉토리에 mailbox로 옮겨진다.

-/etc/sendmail.cf 설정
실질적으로 이 파일은 전문가들 조차도 까다롭게 생각하는 파일입니다.
따라서 꼭 필요한 부분에 대해서만
     설정을 하도록 하겠습니다.

[root@rootshell root]# vi /etc/sendmail.cf

        *중략*

#########################
#     local info        #
#########################
Cwlocalhost
예)Cwdacker.net
   Cwwww.yahoo.co.kr
메일 서버의 도메인 지정(복수 도메인 가능)

Fw/etc/sendmail.cw
많은 복수 도메인을 기입하는 것의 불편을 막기 위해 별도의
파일을 만들어 저장

#Dj$ww.Foo.COM
예)Djdacker.net
j뒤에 도메인명을 지정하면 sendmail이 자신의 호스트명을
알아내지 못하는 실수가 있을 때 강제적으로 그 도메인으로 메일이 작동될 수
있게 해주는 것

#who I masquerade as (null for no masquerading) (see alse $=M)
DM
DMhacker.net
예)현재 메일 호스트명이 dacker.net이지만 위와 같이 해놓으면 메일을 받는
사람들에게는 hacker.net에서  편지가 온 것으로 표시됩니다.
(디립따 욕을 해놓고 다른 발신지를 적어놓으면 안돼겠죠*^^*)
원래 목적은 메일을 보내고 답장을 받을 때 hacker.net으로 받겠다는 의미입니다.
메일 전송자의 주소를 메일 호스트와 다르게 지정

#Foward file research path
O ForwardPath=$z/.forward.Sw:$z/.forward
이메일 주소가 여러개일 때 한 이메일 주소에서만 메일을
수신하겠다 할 때 사용

        *생략*


    -/etc/sendmail.cw 설정

[root@rootshell root]# vi /etc/sendmail.cw
#sendamail.cw - include all aliases for your machine here
여기에 메일 호스트로 사용하고자 하는 도메인들을
입력해 주면sendmail.cf파일에서 지정한 Fw 명령에 의해 이 파일 내용을 읽어서
여기에 기록된 도메인들에 관하여 Sendmail기능이 작동하게 됩니다.


    -/etc/sendmail.mc 설정(매크로 파일 설정)

[root@rootshell root]# vi /etc/sendmail.mc

레드햇6.0패키지에 들어 있는 Sendmail버젼 8.9.3 버젼에
추가된 파일로 sendmail.cf파일을 변경했을 때 m4라는 전 처리기(preprocessor)로
이 매크로 설정을 작동시켜 /etc/sendmail.cf 파일을 새롭게 생성시켜 주여야 합니다.
만일 여러분이 Sendmail설정 파일을 실수로 인하여 삭제를했거나 원상태의 설정 파일로
복원하고 싶다면 아래와 같은 명령을 실행하면 sendmail.cf가 생성됩니다.

[root@rootshell root]# m4 /etc/sendmail.mc > /etc/sendmail.cf

    -/etc/aliases

메일 알리아스 기능이란, 어느 계정으로 메일을 보냈을 때 그 계정으로 메일이
도착하지 않고, 알리어스 파일에 지정된 다른 계정으로 메일이 전송될 수 있게
하는 기능입니다.

[root@rootshell root]# vi /etc/aliases
hacker: dacker@dacker.net, admin@hitel.net, linux
linux: sa@dacker.net, webma@dacker.net
이것은 hacker라는 계정으로 메일을 보내면,
dacker@dacker.wo.to, admin@hitel.net로 메일이
전달되고, 로컬 호스트에 있는 linux 계정으로오는 메일은 다시
sa@dacker.net, webma@dacker.wo.to 계저으로 메일이 전달됩니다.
설정을 바꿔 준 후에는 newaliases 명령을 이용하여 /etc/aliases/를 etc/aliases.db
파일로 저장시켜 줘야 한다.

    -/etc/mail/access 설정

레드햇 5.0 이후 부터 Sendmail에는 스팸 메일을 방지하기 위하여 메일 중계기능이
추가 되었다. 따라서 다른 네트워크들이 나의 서버를 통하여 메일을 전송하는 것이
막혀있다. 자신의 네트워크가 아닌 곳에서도 메일을 전송하기 위해서는 access에
도메인 또는 호스트 주소를 입력하여 DB 파일로 저장해야 한다.

[root@rootshell root]# vi /etc/mail/access
/*모든 간격은 Tab key을 사용한다는 것을 잊지 말기 바란다.*/
yahoo.co.kr      RELAY    
dacker.net       RELAY
linux.com        RELAY
hacker.net       REJECT

이를 DB화 해 준다.
[root@rootshell root]# makemap hash /etc/mail/access < /etc/mail/access


    -/etc/mail/vitusertable 설정(가상 메일 서버스)
만약 여러개의 도메인을 서비스 하던 중, 모두들 admin계정을 달라고 요구할 경우에는
virtusertable파일을 설정해야 한다.

[root@rootshell root]# vi /etc/mail/virtusertable
새로작성=>
admin@dacker.com              hacker    
admin@dacker.co.kr            dacker
admin@dacker.net              webma
위의 설정은 실제로는 admin이라는 계정이 3개나 존재할 수  없다.
다만 이렇게 오는 메일을 실제 계정을 가지고 있는 사용자로 전달하는 역활을 한다.

[root@rootshell root]#
makemap hash /etc/mail/vitusertable < /etc/mail/vitusertable
이를 DB화 해 준다.

    -SendMail의 재시동

[root@rootshell /root]# /etc/rc.d/init.d/sendmail  stop
shutting down sendmail                                 [ok]
[root@rootshell /root]# /etc/rc.d/init.d/sendmail start
starting sendmail                                      [ok]

  
여기 까지 오시느라고 대단히 수고가 많으셨습니다. sendmail에 대해서는 여기까지
알아보도록 하겠습니다. 더 궁금한 것이 있으신 분들은 관련 서적이나 인터넷사이트를
뒤져 보면 많은 것들이 나와있습니다.



===================================================================================================

이 사이트에서 제공하고 있는 내용은 개인의 경험을 바탕으로 제공되고 있습니다.
그러므로 이용시 예기치 않은 오류가 발생할 수도 있음을 알려드립니다.
여러분이 도움 및 정보를 바라신다면 저에게 메일을 보내 주십시요. 감사합니다.

www.dacker.wo.to copyleft (c) 2000 by park byoung-seo all lefts reserved








http://www.superuser.co.kr/linux/dacker/page03.htm

'Sendmail' 카테고리의 다른 글

pop3 110포트 안열릴때...  (0) 2010.11.01
센드메일 설정 3  (0) 2009.05.19
sendmail 설정 2  (0) 2009.05.19
sendmail 설정 1  (0) 2009.05.19
Posted by 낭군

댓글을 달아 주세요

sendmail 설정 2

Sendmail 2009. 5. 19. 23:32

메일서버란?


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


인터넷이 대중화되면서 편지를 주고받는 것보다 E-Mail(전자우편)을 주고 받는 것이 일상적인 일이 되었습니다. 이번 주 테마에서는 E-Mail(전자우편)이 어떻게 전달되는지의 개념과 메일서버로 가장 많이 사용되고 있는 Sendmail의 설치방법과 사용법에 대해서 알아보도록 하겠습니다.


E-mail(전자우편)과 메일서버

Sendmail의 설치와 사용법을 배우기 전에 E-Mail(전자우편)이 어떠한 경로를 통해 전달되고 어떻게 사용되는지에 대해 살펴보겠습니다. 메일서버란 인터넷에서 E-Mail(전자우편)을 주고 받는 기능을 수행하는 서버를 말하며, E-Mail(전자우편)은 크게 두 종류의 프로그램과 프로토콜에 의해 전달됩니다. 여기서 두 종류의 프로그램이란 MUA(Mail User Agent)와 MTA(Mail Transfer Agent)를 말합니다. MUA로는 사용자가 직접 메일을 작성하거나 보낼 때 사용하는 넷스케이프 메신저, 마이크로소프트 아웃룩, 유도라 등의 프로그램이 있고, MTA는 실제로 메일을 전송해주는 Sendmail, Qmail등의 프로그램이 있습니다.

아래의 그림과 같이 Sendmail이 설치된 메일서버는 SMTP(Simple Mail Transfer Protocol) 프로토콜을 사용하여 메일을 전송하고, 호스트로부터 받은 메일을 클라이언트로 전달할 때는 POP3 또는 IMAP등의 프로토콜을 사용합니다. 예를 들어 aroma@mail.linuxul.com이라는 메일주소를 가진 사람이 다른 서버에 계정을 가진 nea@yahoo.co.kr이라는 친구에게 메일을 보낸다고 가정하면, 아래와 같은 과정을 거쳐 메일이 전달됩니다.



1. aroma@mail.linuxul.com이라는 사람이 넷스케이프 메신저와 같은 MUA 프로그램에서 보낸 메일은 먼저 SMTP 프로토콜을 통해 mail.linuxul.com 메일서버에 전달됩니다.

2. mail.linuxul.com에서 대기하고 있던 MTA데몬(Sendmail)은 메일을 메일큐 디렉토리(/var/spool/mqueue)에 임시 저장한 후 SMTP 프로토콜을 통해 다시 yahoo.co.kr메일서버로 전송하고 큐디렉토리에 저장했던 메일을 삭제합니다. yahoo.co.kr에서는 sendmail 데몬이 대기하고 있다가 mail.linuxul.com 메일서버가 보내온 메일의 도착지가 자신의 것인지 확인 한 후 맞으면 메일박스(/var/mail 디렉토리)에 nea라는 파일로 저장합니다.

3. nea@yahoo.co.kr의 사용자는 마이크로소프트 아웃룩이나 유도라와 같은 MUA를 통해 메일을 확인하며, 이때에는 POP3나 IMAP등의 프로토콜을 통해 메일이 전송됩니다.



Sendmail
Sendmail은 메일서버로 가장 많이 사용되고 있는 MTA프로그램으로 공식사이트는 http://www.sendmail.org입니다. 대부분의 리눅스 배포판에 기본적으로 설치가 되어 있으므로 자신의 시스템에 맞는 환경설정을 한 후 사용하시면 됩니다. Sendmail의 최신 버전은 sendmail 8.11.2이며 아래의 사이트에서 다운받을 수 있습니다.

Sendmail 공식 미러사이트 - ftp://ftp.sendmail.org
Sendmail 미러사이트 - http://www.sendmail.org/mirrors.html
국내 미러사이트 : ftp://ftp.linux.co.kr/server/sendmail




POP3와 IMAP

앞에서도 설명했듯이 넷스케이프 메신저나 마이크로소프트 아웃룩과 같은 클라이언트 프로그램에서 메일을 가져오려면 메일서버에 POP3 또는 IMAP등의 데몬이 설치되어 있어야 합니다. POP3(Post Office Protocol version 3)와 IMAP(Internet Message Access Protocol)데몬은 사용자의 인증절차를 거친 후 메일을 클라이언트에 보내는 기능을 수행합니다. RedHat 리눅스 배포판에서는 IMAP과 POP 데몬을 하나의 패키지(UW IMAP)로 제공하고 있어 누구나 쉽게 설치할 수 있으며 최신버전은 아래의 사이트에서 다운받으시면 됩니다.

UW IMAP 공식 홈페이지 - http://www.washington.edu/imap/
UW IMAP 미러사이트 - ftp://ftp.cac.washington.edu/imap
국내 미러사이트 – ftp://ftp.linux.co.kr/server/imap



Sendmail 설치하기


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


Sendmail과 IMAP 설치하기

대부분의 리눅스 배포판에는 Sendmail이 기본적으로 내장되어 있으므로 최신버전이나 보안문제로 인해 다시 설치해야 하는 경우를 제외하면 소스를 사용해 설치하는 경우는 드물고 배포판에 들어있는 RPM 패키지를 사용해 설치합니다.

Sendmail 설치하기

와우 리눅스 7.0 까치버전을 기본 OS로 하여 Sendmail을 설치하는 방법에 대해 알아보겠습니다. 먼저 CD-ROM을 마운트한 후 /RedHat/RPMS 디렉토리에 있는 sendmail을 확인합니다. 기본적으로 제공하는 Sendmail은 Sendmail-8.11.0입니다.
# mount /dev/cdrom
# cd /mnt/cdrom/RedHat/RPMS
# ls sendmail*
sendmail-8.11.0-8.i386.rpm sendmail-cf-8.11.0-8.i386.rpm
sendmail-doc-8.11.0-8.i386.rpm


Sendmail에 관련된 rpm패키지를 모두 설치합니다.
# rpm –Uvh sendmail*
sendmail #############################
sendmail-cf #############################
sendmail-doc #############################


설치된 Sendmail의 정보는 아래의 명령으로 확인합니다.






Sendmail을 실행하기전에 /etc/services 파일을 열고 smpt 프로토콜에 주석처리가 되어 있는지 확인한 후 Sendmail 서버를 실행합니다.





Sendmail 서버가 정상적으로 실행되었는지 확인하기 위해 telnet을 사용해 25번 포트(smtp)로 접속해봅니다. 아래와 같은 메시지가 출력되면 Sendmail이 정상적으로 실행된 것입니다.






Washington IMAP설치하기

Washington IMAP 역시 RPM 패키지로 제공하고 있으므로 CD-ROM을 마운트한 후 쉽게 설치할 수 있습니다. 먼저 CD-ROM에 있는 UW IMAP 패키지를 확인 해 보겠습니다.
# mount /mnt/cdrom
# cd /mnt/cdrom/RedHat/RPMS
# ls imap*
imap-2000-3.i386.rpm


Washington IMAP는 imap-2000-3이라는 파일명으로 패키징되어 있으며, POP3와 IMAP 데몬이 모두 설치됩니다.
# rpm –Uvh imap-2000-3.i386.rpm
imap  #############################


설치된 Washington IMAP이 어디에 설치되었는지 아래의 명령으로 확인해 봅니다.





이제 설치한 imap과 pop3 데몬을 클라이언트에서 접속할 수 있도록 실행시켜야 합니다. 먼저 /etc/services 파일을 열어 pop3와 imap의 주석을 제거하고 아래와 같이 설정되었는지 확인합니다. pop3  110/tcp pop-3 # POP version 3
pop3 110/udp pop-3

imap2 143/tcp imap # Interim Mail Access Proto v2
imap2 143/udp imap




레드햇 7.0 버전부터는 슈퍼데몬이 inetd에서 xinetd로 변경되었고, inetd.conf 설정파일이 xinetd.conf 파일로 변경되었습니다. xinetd의 기본적인 설정파일들은 /etc/xinetd.d에 위치하므로 설치한 ipop3와 imaps 파일을 열고 disable = no를 추가하여 아래의 그림과 같이 설정합니다.




다음에는 슈퍼 데몬을 다시 재시작합니다.




이제 마지막으로 설치한 POP3와 IMAP이 제대로 가동되었는지 확인해 보겠습니다. telnet을 이용하여 110번 포트(POP3)와 143번 포트(IMAP)로 접속한 후 아래와 같이 테스트 해봅니다.
여기까지 제대로 되었다면 설치는 성공한 것입니다.



Sendmail 설정하기


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


Sendmail 설정하기

Sendmail에서 가장 중요하고도 어려운 부분이 sendmail.cf 파일의 설정입니다. O’Reilly사에서 Sendmail에 대한 전문서적이 나올 정도로 방대하고 다양한 기능을 가지고 있으며 사용법도 매우 다양합니다. Sendmail을 사용하기 위해 기본적으로 알아야 할 설정 파일들에 대해 살펴보겠습니다.


/etc/sendmail.cf

Sendmail의 가장 중요한 설정파일로 /etc 또는 /etc/mail 디렉토리에 자동으로 설치되어 있습니다. Sendmail.cf에 대한 자세한 내용은 Bryan Costales 와 Eric Allman이 집필한 O’Reilly의 Sendmail을 참고하시거나 이상로님의 홈페이지 http://trade.chonbuk.ac.kr/~leesl/mail/을 참고하시기 바랍니다. 여기서는 간단히 메일서버를 관리하기 위한 몇 가지 설정에 대해서만 다루겠습니다.

Fw/etc/mail/local-host-names
메일을 수신할 호스트 이름을 명시한 파일의 위치를 설정합니다.

FR-o /etc/mail/relay-domains
relay-domains파일에는 Relay를 허용할 호스트의 이름을 설정합니다. 주석으로 처리하면 모든 IP에 대해서 Relay가 허용되므로 스팸메일과 같은 문제가 발생할 수도 있으므로 주의하시기 바랍니다.

DnMAILER-DAEMON
Sendmail 서버가 에러메시지를 보내야 할 경우 보낸 사람의 이름을 결정합니다. 잘못된 메일이 되돌아 온 경우 FROM : Mail Delivery Subsystem <MAILER-DAEMON>과 같은 메시지를 보신적이 있을 것입니다.

Kaccess hash /etc/mail/access
Relay를 허용하거나 거부할 특정 IP와 도메인을 설정하는 파일입니다. relay-domains보다 사용이 편리하므로 많이 사용됩니다.
O ForwardPath=$z/.forward.$w:$z/.forward
여러 개의 메일을 가진 경우, 특정 메일계정으로 들어온 메일을 다른 메일로 곧바로 보내주는 포워딩파일을 설정합니다. 사용자의 홈 디렉토리에 .forward라는 파일을 만들고 포워딩시킬 메일 주소를 입력하면 됩니다.

# O MaxMessageSize=1000000
메일의 최대 크기를 결정합니다. 주석을 제거하면 설정한 크기(Byte단위)보다 큰 메일은 전송할 수 없게 됩니다. 지금 써준 1000000은 1메가로 제한한 메일 용량입니다.

O QueueDirectory=/var/spool/mqueue
큐 디렉토리를 설정합니다.

O Timeout.queuereturn=5d
메일을 보내려는 호스트에 문제가 생기면 메일은 큐 디렉토리에 저장됩니다. Sendmail 서버는 쌓인 메일을 상대방 호스트에 보내기 위해 주기적으로 접속을 시도하며, 일정한 기간이 지나면 메일을 다시 발송한 사람에게 되돌려 보냅니다. Sendmail이 메일을 보내려고 시도하는 기간을 설정하는 옵션으로 5d는 5일을 의미합니다.

O Timeout.queuewarn=4h
큐 디렉토리에 쌓인 메일이 지정한 시간안에 전송되지 못할 경우 메일을 보낸 사람에게 경고 메일을 보냅니다. 기본값은 4h로 4시간안에 전송되지 못하면 보낸 사람에게 경고의 메일을 보냅니다.

Mlocal, P=/usr/bin/procmail, F=lsDFMAw5u:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
T=DNS/RFC822/X-Unix,
A=procmail -Y -a $h -d $u

사용자계정에 대문자가 있는 경우에도 메일을 받을 수 있도록 설정하려면 Mlocal로 시작하는 부분을 찾아 F= 부분에 'u'를 추가합니다.



/etc/mail/access
스팸메일을 방지하기 위해 Relay를 허용할 호스트의 IP와 도메인을 설정하는 매우 중요한 파일입니다. Relay에 대한 자세한 내용은 [Relay에 대하여]를 참고하시기 바랍니다.

먼저 vi에디터나 emacs를 사용해 /etc/mail/access파일을 열고 릴레이를 허용하거나 거부할 IP 주소를 아래와 같이 입력합니다.




203.243.88      RELAY -> 203.243.88 네트워크에 속하는 C클래스의 IP주소에 대해서는 메일을 [보내기/받기]를 할 수 있지만 다른 IP주소에서는 메일을 받을 수만 있습니다.
spam.com      REJECT -> spam.com 도메인에 속한 모든 호스트에서 오는 메일은 완전히 거부됩니다.

이와 같이 설정한 후에는 아래의 명령으로 DB파일(access.db)을 만들어 줍니다.
# cd /etc/mail
# makemap hash access < access

위의 작업은 access 파일을 수정할 때마다 해주어야 하며, Sendmail을 다시 시작할 필요는 없습니다.

[Relay에 대하여]
그럼 간단하게 Relay에 대한 개념을 알아보겠습니다.
예를 들어 A라는 사람은 IP주소가 203.243.88.21이라는 컴퓨터에서 aroma@mail.linuxul.com이라는 메일을 사용한다고 가정하고, B라는 사람은 IP주소가 168.211.106.34인 컴퓨터에서 nea@yahoo.co.kr이라는 메일을 사용한다고 가정합니다.
B가 A에게 메일을 보내면 메일은 203.249.88.21로 가는 것이 아니라 mail.linuxul.com서버의 /var/mail 디렉토리 밑에 aroma라는 파일로 복사가 됩니다. 그러면 A는 MUA 프로그램을 사용해 메일을 확인할 수 있지요. 그런데 여기서 중대한 문제점이 생겨나게 됩니다. 아무나 주소를 맞게 보내면 그냥 /var/mail에 쌓이게 되는 것이죠. 그래서 하드디스크가 메일로 꽉 차버리거나, 네트워크 전송량의 증가로 네트워크가 마비되는 경우가 생겨나게 됩니다. 이 문제를 막기 위해서 고안된 방법이 바로 Relay라는 방법입니다.



Relay에는 두 가지 방식이 있습니다.
o 첫 번째는 메일을 보내는[송신] 컴퓨터의 제한
o 두 번째는 메일을 받는[수신] 컴퓨터의 제한

Relay로 주로 쓰이는 방법은 메일을 확인하는 컴퓨터는 제한하지 않고 메일을 보내는 것을 제한하는 것입니다. 즉, 위의 그림과 같이 /etc/mail/access파일에 203.243.88의 C클래스를 허용 가능하게 해주면 203.243.88.21처럼 허용 그룹에 들어 있는 컴퓨터에서는 메일을 보내고/받을 수가 있지만, 그룹에 들지 않은 168.211.106.34라는 컴퓨터에서는 메일을 확인할 수만 있습니다. 또한 spam.com이라는 도메인에 속한 호스트에서 오는 메일은 보내기와 받기가 모두 거부됩니다.
/etc/mail/relay-domains을 사용해도 됩니다. 하지만, 차이점은 relay-domains을 사용하면sendmail데몬을 다시 실행시켜 주어야 하지만 /etc/mail/access파일을 사용하면 다시 실행할 필요 없이 makemap hash /etc/mail/access < /etc/mail/access라고 실행만 시켜주면 됩니다.



/etc/mail/local-host-names
메일을 수신할 호스트의 이름을 입력하는 파일로, Sendmail 8.9.x 버전이하에서 사용되었던 sendmail.cw 파일의 명칭이 Sendmail 8.10.x 버전부터는 local-host-names로 변경되었습니다. Sendmail 서버는 이곳에 적힌 호스트의 이름으로 메일이 들어오면 더 이상 다른 서버로 메일을 보내지 않고 자신의 메일박스에 저장합니다. 아래와 같이 메일서버의 호스트이름을 입력하거나 여러 개의 가상호스트를 사용한다면 모두 입력해야 합니다.






/etc/aliases
특정 사용자에게 온 메일을 다른 사람에게 보내주거나, 메일링리스트를 작성해야 하는 경우에 사용되는 파일로 보안에 주의하여 사용해야 합니다. aliases 파일을 열어보면 시스템 계정들이 아래와 같이 root로 alias되어 있습니다. 또한 특정 사용자를 다른 사용자로 alias 시킬 수도 있습니다.





메일링 리스트 작성하기
메일링리스트란 동일한 메일을 여러 사람에게 보내야 할 경우 사용되며, 그룹을 지정해 구성원들의 목록을 써주거나 특정 파일을 지정하는 방법 등으로 사용됩니다. 예를 들어 aroma, bulpeng, bibi와 같은 사용자들을 test1라는 그룹으로 지정해 보겠습니다.

vi편집기로 /etc/aliases 파일을 열고 아래의 라인을 추가한 후 저장합니다. 앞으로 test1에게 메일을 보내면 지정된 모든 사용자들에게 메일이 도착하게 됩니다.
test1: aroma, bulpeng, bibi


다른 하나는 특정파일을 지정해 주는 방법으로 include 지시자를 사용한 후에 파일의 경로와 파일이름을 입력합니다.
test2: :include:/etc/maillist/test2


# cat /etc/maillist/test2
aroma
bulpeng
bibi

파일을 수정한 후에는 newaliases 명령으로 aliases.db를 만들어 줍니다.
# newaliases
/etc/aliases: 40 aliases, longest 28 bytes, 434 bytes total

이제 test1 또는 test2로 메일을 보내면 지정된 사용자들(aroma, bulpeng, bibi)이 모두 메일을 받아볼 수 있습니다.

Sendmail의 보안


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


설정파일 속성 변경하기
# chattr +i /etc/mail/sendmail.cf or /etc/sendmail.cf
# chattr +i /etc/mail/local-host-nameds
# chattr +i /etc/mail/aliases or /etc/aliases
# chattr +i /etc/mail/access




Sendmail deamon을 실행하는 쉘을 바꾸어주기
Sendmail의 보안을 위해서는 보통 프로그램의 /bin/sh을 smrsh program으로 바꾸어 주어야 합니다. /bin/sh로 실행이 되었을 경우에 해킹의 우려가 있으므로, 이를 제한하기 위해서 Sendmail 프로그램의 실행을 제한할 필요가 있기 때문입니다.
하지만, 레드햇의 RPM으로 설치했을 경우에는 Default로 설정이 되어 있습니다.

/etc/mail/sendmail.cf 또는 /etc/sendmail.cf 파일에서
Mprog, P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/H drToL, D=$z:/,
T=X-Unix/X-Unix/X-Unix,
A=sh -c $u

의 굵게 쓴 파일을 아래와 같이 바꾸어주고

Mprog, P=/usr/sbin/smrsh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/H drToL, D=$z:/,
T=X-Unix/X-Unix/X-Unix,
A=smrsh -c $u

sendmail.cf 파일을 저장하고 아래와 같이 sendmail deamon을 재시작합니다. # /etc/rc.d/init.d/sendmail restart




인증되지 않은 사용자의 Sendmail Deamon사용을 제한하기
Sendmail에는 Anti-Spam Feature를 포함하고 있습니다. 이 기능을 제대로 사용하기 위해서는 /etc/mail/sendmail.cf 또는 /etc/sendmail.cf파일에서 옵션을 바꾸어 주어야 합니다.
# privacy flags
O PrivacyOptions=authwarnings, goaway

Sendmail에서 goaway 옵션을 사용할 경우에 SMTP의 EXPN, VRFY명령어를 제한하게 됩니다. 이로 인해서 VERB명령어도 더불어 제한하게 됩니다. 처음 SMTP에 접하시는 분들은 이 명령어에 대해서 생소할 수 있으므로 약간의 설명을 덧붙이겠습니다. STMP에 접속하여서 MAIL을 전달하기 위해서는 여러 가지 명령어를 사용하게 되어 있습니다.
아래와 같이 접속 후 HELP 명령어를 타이핑하면 HELO, EHLO, MAIL, RCPT, DATA, RSET, NOOP, QUIT, HELP, VRFY, EXPN, VERB ETRN, DSN, AUTH, STARTTLS등의 사용 가능한 명령어를 보실 수 있습니다.






자세한 사용법과 내용은 HELP <Command>하시면 알 수 있습니다. HELP AUTH <- 입력
214-2.0.0 AUTH mechanism [initial-response]
214-2.0.0     Start authentication.
214 2.0.0 End of HELP info

EXPN aroma <- 입력 (Mail list의 관계된 메일 계정을 보여줄 수 있는 명령어입니다.)
250 2.1.5 <sweetness@linux.co.kr>
VRFY aroma <- 입력(Alias에 관계된 메일 계정을 보여줄 수 있는 명령어입니다.)
250 2.1.5 <aroma@mail.linuxul.com>


보안설정 후에는 아래와 같은 메시지가 나타납니다.
EXPN aroma <- 입력
502 5.7.0 Sorry, we do not allow this operation




mailq command의 제한하기
/usr/bin/mailq 명령어를 제한하기 위해서는 /etc/mail/sendmail.cf or /etc/sendmail.cf파일에서 옵션을 바꾸어 주어야 합니다.
# privacy flags
O PrivacyOptions=authwarnings, goaway, restrictmailq

또한, queue디렉토리를 root권한으로 막아주고 재시작합니다.
#chmod 0700 /var/spool/mqueue
#/etc/rc.d/init.d/sendmail restart


mailq명령어를 실행시키면 아래와 같은 메시지가 나타납니다.
aroma$ mailq
You are not permited to see the queue




Queue 프로세스를 root권한으로 제한하기
Queue프로세스를 root권한으로 제한하기 위해서는 /etc/mail/sendmail.cf 또는 /etc/sendmail.cf파일에서 아래와 같이 옵션을 바꾸어 줍니다.
# privacy flags
O PrivacyOptions=authwarnings, goaway, restrictmailq, restrictqrun

파일을 저장후 재시작합니다.
#/etc/rc.d/init.d/sendmail restart





SMTP Greeting Message를 수정하기
Sendmail의 Version 정보라든지 여러 가지 이유로 Connected중에 보여주는 아래와 같은 메시지들을 바꾸어주므로, 불필요한 정보를 숨길 수 있습니다. [root@mail /root]# telnet mail.linuxul.com 25
Trying 211.106.100.89...
Connected to mail.linuxul.com.
Escape character is '^]'.
220 mail.linuxul.com ESMTP Sendmail 8.11.0/8.11.0; Wed, 21 Feb 2001 22:50:51 +0900


/etc/mail/sendmail.cf 또는 /etc/sendmail.cf파일에서 옵션을 바꾸어 주어야 합니다.
# SMTP initial login message (old $e macro)
O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
를 아래와 같이 수정합니다.
# SMTP initial login message (old $e macro)
O SmtpGreetingMessage=$j

파일을 저장후 Sendmail을 재시작합니다.
#/etc/rc.d/init.d/sendmail restart

수정후에는 아래와 같은 메시지가 출력됩니다.
# telnet mail.linuxul.com 25
220 localhost.localdomain ESMTP




Sendmail 모니터링

[Sendmail의 프로세스 상태보기]
# ps aux|grep sendmail
root 21094 0.0 0.3 3244 1504 ? S 08:43 0:00 sendmail: accepti


[Sendmail의 mail 상태를 모니터링하기]




praliases명령은 현재 메일 시스템의 Aliases상태를 보여줍니다.
# praliases



Sendmail Reference
Sendmail FAQ - http://www.sendmail.org/faq
Compiling Sendmail - http://www.sendmail.org/compiling.html
Anti-Spam Configuration Control - http://www.sendmail.org/m4/anti-spam.html
장우현님의 Sendmail 이야기 –
http://kldp.org/KoreanDoc/html/Sendmail-KLDP/Sendmail-KLDP.html
이상로님의 On Sendmail - http://trade.chonbuk.ac.kr/~leesl/mail/
김정균님의 Sendmail - http://www.oops.org/?t=lecture&s=sendmail  

'Sendmail' 카테고리의 다른 글

pop3 110포트 안열릴때...  (0) 2010.11.01
센드메일 설정 3  (0) 2009.05.19
sendmail 설정 2  (0) 2009.05.19
sendmail 설정 1  (0) 2009.05.19
Posted by 낭군

댓글을 달아 주세요

sendmail 설정 1

Sendmail 2009. 5. 19. 23:32
conf 파일 : /etc/mail/sendmail.cf

* SMTP(보내는 메일서버) 로 이용시 보내는 메일의 양을 5M 로 제한한다
# maximum message size
O MaxMessageSize=5000000



* 한번에 메일 발송 시 동시 발송(참조 발송)이 가능한 메일 계정의 수를 20개로 제한한다.
# maximum number of recipients per SMTP envelope
O MaxRecipientsPerMessage=20



* 25번으로 원격 접속 후 HELP 명령어를 입력하면 버전 정보 뿐만 아니라, 제공하는 각종 정보를 조회할 수 있다.
이러한 정보가 보이지 않도록 설정한다.
/etc/mail/helpfile 삭제



* 25번으로 접속시 sendmail 의 버전 정보 등 아무런 정보도 보이지 않도록 수정한다.
# SMTP initial login message (old $e macro)
O SmtpGreetingMessage=$j



* 타 메일서버에서 내부의 메일 서버로 전송되는 첨부 메일의 양을 5M로 제한한다.
"Local and Program Mailer specification" 부분을 설정(M=5000000)
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=10/30,
R=20/40, M=5000000, T=DNS/RFC822/X-Unix, A=procmail -Y -a $h -d $u

'Sendmail' 카테고리의 다른 글

pop3 110포트 안열릴때...  (0) 2010.11.01
센드메일 설정 3  (0) 2009.05.19
sendmail 설정 2  (0) 2009.05.19
sendmail 설정 1  (0) 2009.05.19
Posted by 낭군

댓글을 달아 주세요