2. sendmail.mc 설정값 변경 : vi /etc/mail/sendmail.mc
: - DAEMON_OPTIONS('Family=inet, ~~~~ 부분에서 127.0.0.1값 제거해서 다른외부에서도 메일을 주고받을수있도록 함.
: DAEMON_OPTIONS('Family=inet, Name=MTA-v4, Port-smtp')dnl 과 같이 되면됨.
3. 변경된값을 적용 : m4 sendmail.mc
4. 접근할수 있는 IP 대역 설정 : vi /etc/mail/access
: 허용할 IP를 아래와 같이 설정해줌.
192.168.0 RELAY : 192.168.0으로 시작하는 대역을 허용.
5. 설정 적용 : makemap hash access < access
6. hosts 파일에 도메인 설정 : vi /etc/hosts
: 192.168.0.0 domainname
7. 수신한 메일 도메인 설정 : vi /etc/mail/local-host-name
: domain.com, domain.co.kr등등을 설정하면 해당 도메인으로 되어있는 메일주소에서 오는 메일을 받을수있음.
8. sendmail 재시작 : /etc/init.d/sendmail restart or service sendmail resetart
9. 끝.
Sendmail 은 크게 프로그램인 sendmail과 config 파일인 sendmail.cf로 구분할 수 있다.
Config 파일은 ---- sendmail.cf
|-- Queue file
|-- Aliases File 로 나누어 진다.
vi /etc/sendmail.cf
내용이 무쟈게 길다... 줄번호를 붙여서 본다. :set nu 라고 vi 명령창에 쓴다.. 그럼 줄번호 보인다.
여기서 sendmail.cf 파일의 설정 규칙을 잠깐 짚고 넘어가자.
1. 빈 행은 무시한다.
2. # 으로 시작하는 행은 주석처리로 무시한다.
3. C,D,F,H,K,M,O,P,R,S,V 로 시작하는 행은 설정행이며 이들은 각각 하나의 설정명령이다.
4. 하나의 빈 공간 또는 여러개의 빈 공간(TAB) 으로 시작하는 행은 앞 행의 연장이다.
********************
센드메일의 설정 명령어
********************
C : 클래스 정의
D : 매크로 정의
E : 환경변수 지정
F : 클래스 정의 (file, pipe)
H : Header 정의(Format of header)
K : Key file 정의(map 정의)
M : mailer 정의
O : 옵션
P : Message Precedences
R : 덮어쓰기(Rewrite)
S : Ruleset(새로운 규칙지시자)
T : Truseted users( 사용자 지정)
V : 설정 파일 버전
81번째 줄 정도에 Cwlocalhost 이라고 되어있는 부분이 보일것이다.
이 부분은 C설정 명령으로 localhost를 w 클래스로 정의하는 행이다. 기본적으로 localhost가 설정되어있다.
C 명령어는 문자열을 정의한다.
설정 예 : Cwlocalhost yadong.com dolpung.pe.kr
(이때 각 도메인은 진짜 등록되어있어야 한다. 요즘에는 진짜 도메인 아니면 메일이 안간다.
그리고 네임서버 상에서도 제대로 설정이 되어있어야 한다)
84번째 줄 정도에 보면 fw/etc/mail/local-host-names 라는 부분이 보일것이다.
이 부분은 메일을 수신할 호스트 이름을 명시할 파일의 위치를 설정이다.
주석처리되어있으면 절대 안된다. (sendmail 8.9 이하 버젼은 아마 sendmail.cw 파일로 되어있을것이다.)
179번째 줄 근처에 보면
#MaxMessageSize=1000000 이라는 부분이 있는데 여기는 메일의 최대크기를
지정해 주는 문장이다. 그런데 지금은 주석처리가 되어있다. 이렇게 주석처리가 되어있다면 메일크기의
제한이 없다는 것이다. 이부분을 주석을 풀고 용량을 조절하면 개인당 메일용량을 조정할 수 있게 된다.
이곳은 최대 메세지 크기 제한이다.
만약 메일 공간의 용량을 제한하고 싶다면 sendmail.cf 파일의 제일 아랫부분(1484번째 줄인가??)에
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
M=10485760, T=DNS/RFC822/X-Unix,
이런 부분이 있을꺼다. 여러분의 현재 설정에서는 M=10485760 이라는 부분이 없을텐데
이 부분을 추가해준다. 쉼표도 찍어야겠죠?
이렇게 하면 받는 메일의 용량을 10Mb 로 제한을 하게된다.
274 번 째 줄 근처에
O QueueDirectory=/var/spool/mqueue 라는 부분이 있는데 이부분은 큐 디렉토리를 설정해준다.
293 번째 줄에 보면
O TimeOut.queuereturn=5d 라고 되어있는데 메일을 보내려는 호스트에 문제 발생시 큐 디렉토리에
저장하게 된다.
머 이밖에 많은 설정이 있지만 일단 생략하고 자세한것은 따로 책을 보기 바란다.
이제 sendmail.cf 파일의 설정은 대충(정말 대충이다 ㅡ,.ㅡ) 끝났다.
이제 해야할 일은 센드메일의 수신자를 설정하는 일이다. 위에서 sendmail.cf 파일을 설정할때 메일을 받을곳의
호스트 이름을 명시할 파일의 이름이 local-host-names 라는 파일이라는것을 우리는 알았다.
이 파일은 /etc/mail/ 디렉토리 안에 있다.
vi /etc/mail/local-host-names 라고 쳐서 아래와 같이 입력한다.
자기호스트.com # yadong.com 이 되겠지요??
저장하고 나온다.
이렇게 하면 들어오는 메일의 수신자를 설정하게 된것이다.
이제 남은 설정은 센드메일로의 접근을 제어해 주는 일이 남았다.
/etc/mail/access 라는 파일이 그 역할을 해준다. 이 파일이 해주는 역할은 특정 호스트나 도메인의 접근을
허락, 거부 여부를 설정할수 있는 중요한 파일이다.
vi /etc/mail/access 라고 입력하자..
그럼 파일 내용중에 아래와 같은 부분이 있을것이다.
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
위의 상황은 자기 자신, 즉 localhost 에서 보내는 편지는 통과(RELAY) 시키겠다고 적어놓은 것이다(default값임)
위의 아랫쪽에 자기의 주소와 IP 번호를 입력하고 RELAY(통과) 시키자.
yadong.com RELAY
211.108.242.host RELAY
이렇게 해주게 됨으로써 yadong.com 에서 보내는 편지를 통과 시키겠다!!! 라고 설정이 끝났다.
만약 yadong.com REJECT 라고 하면 어떻게 될까??
정답은 메일 수신이 안된다는 것이다... REJECT 는 특정호스트에서 오는 편지를 접근 못하게(REJECT) 하는 역할을 한다.
만약 스팸메일이나 받기 싫은 메일이 계속 오게 되면 이곳에 HOST 이름을 적어주던지 IP 번호를 적어주고 REJECT 시키면
메일이 거부된다.
참고로 이 파일(access)는 /etc/sendmail.cf 파일에서
'Kaccess hash -o /etc/mail/access' 로 지정되어있어야 한다.(default 값이니까 안건드려도 된당)
그리고 리눅스에서 센드메일은 기본적으로 localhost 이외의 모든 호스트에 대해서 RELAY 를 허용하지 않도록 설정
되어 있다. 그러니까 이 파일에 RELAY 시킬 호스트 이름과, REJECT 시킬 호스트 이름을 적어줘야 한다.
이제 수정이 끝난 access 파일을 데이터베이스화 시켜주어야 한다.
센드메일은 access 파일을 사용하지 않고 access.db 라는 dbm 파일을 이용한다.
cd /etc/mail
makemap hash /etc/mail/access < /etc/mail/access 라고 입력한다. 에러가 당연히 없어야겠징???
이렇게 다 했으면 센드메일 데몬을 다시 시작 시켜주자.
/etc/rc.d/init.d/sendmail stop
/etc/rc.d/init.d/sendmail start
라고 해주자... 물론 restart 해줘도 된다. 오케바리 떴으면 이제 메일을 보내보자.
수신자는 root@dolpung.pe.kr 로 보내주세요..
mail root@dolpung.pe.kr 이라고 입력한다.
subject: <=== 이부분에 제목을 입력하고 그냥 엔터친다.
프롬프트가 그냥 깜빡이고 있으면 내용을 좌아아아아악 적어준다.
다 입력을 하였으면 ctrl+d 를 살포시 눌러준다. 그럼 Cc: 라는 곳이 뜨는데 참조 이니까 그냥 엔터로 무시한다.
http://javarush.com/entry/%ED%8E%8C-Linux-SendMail-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
덧글|신고