· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Docbook Sgml/Mail-Queue

Linux Mail-Queue mini-HOWTO

Linux Mail-Queue mini-HOWTO

조지완

    
   

v2.03, 2001-12-17, sendmail 8.8.7

이 문서에서는 외부 메일을 큐에 쌓아두고 로컬 메일을 전송하는 법에 대해 기술한다. sendmail 로 하여금 사용자가 "그래" 라고 할 때까지 외부 메일을 큐에 걸어두고 로컬 메일을 배달하도록 만드는 데 필요한 수정사항을 담고있다.

고친 과정
고침 0.12002-02-20고친이 조지완
최초 번역, 원문 V2.03, 2001-12-17, sendmail 8.8.7 에 대해

번역상의 오류가 있다면 로 알려주시기 부탁드리며, 이 미니-하우투의 원문은 이쪽 에서 보실 수 있습니다.


1. 들어가며

이 문서는 두 사람에 의해 작성되었다. dial on demand 를 사용하지 않는 방법은 오래된 것으로 Leif Erlingsson 에 의해 씌여졌고, dial on demand 를 사용하는 방법은 Jan P Tietze 에 의해 완성되었다.


2. dial on demand 를 사용하지 않는 방법

Leif Erlingsson 가 작성.

이 방법을 기술한 원 문서에는 불필요한 내용이 많이 포함되어 있다. 여기에 설명된 내용은 원본의 것을 모두 커버한다.


2.1. sendmail 을 기동하기

Slackware 등에서는 /etc/rc.d/rc.M 에 :

echo "Starting sendmail daemon (/usr/sbin/sendmail -bd -os) [queue only mode]..."
/usr/sbin/sendmail -bd -os		# NOT "-bd -q 15m", the "standard" flags!

RedHat 등에서는 /etc/rc.d/init.d/sendmail.init 에 :

echo -n "Starting sendmail: [queue only mode]"
daemon sendmail -bd -os		# NOT daemon sendmail -bd -q1h

와 같이 수정하도록 한다.

-os 옵션은 사실상 필수적인 것이 아니다. 이것이 하는 역할은 :

SuperSafe 옵션은 sendmail 이 매우 안전하게 작동하도록 보장한다.
심지어 사용자가 즉각적인 메일 전송을 원하는 경우에라도
sendmail 은 queue 에 메일을 쌓아두는 방법으로 처리하는데,
이것은 극히 드문 재앙(메일 전송시에 시스템이 다운되는) 등에도
전송중이던 메일을 안전하게 지키는데 기여한다.
이 옵션은 언제나 활성화되어 있어야만 한다.

하여간 이 내용은 sendmail.cf 에 디폴트로 적용되어있는 사항이다.


2.2. sendmail 을 설정하기

원칙을 지키는 (serious) sendmail 사용자는 아래에 제공되는 m4 소스를 사용하라. sendmail 을 업그레이드할 계획이 있고 sendmail.cf 를 별로 수정하지 않는 사용자는 m4 소스로 설정하는 편이 좋다.

만약 sendmail 설정을 수정해서 동적 IP 등을 사용하는 환경에서도 envelope return header [1] 등이 제대로 찍히기를 원하는 상황이 아니라면 아래의 m4 소스는 필요가 없다.


2.2.1. 수정할 내용이 별로 없는 경우 sendmail.cf 에 직접 설정하기

이런 방법은 sendmail 의 버전에 전적으로 의존하는 경향이 있으므로 아래에 설명된 내용은 sendmail-8.8.x 에만 해당됨을 일러둔다.

/etc/sendmail.cf 를 수정 :

# avoid connecting to "expensive" mailers on initial submission?
O HoldExpensive=True

... 다음으로 ...

#####  @(#)smtp.m4	8.33 (Berkeley) 7/9/96	#####

Msmtp,		P=[IPC], F=mDFMuXe, S=11/31, R=21, E=\n, L=990,
		T=DNS/RFC822/SMTP,
		A=IPC $h
Mesmtp,		P=[IPC], F=mDFMuXae, S=11/31, R=21, E=\n, L=990,
		T=DNS/RFC822/SMTP,
		A=IPC $h
Msmtp8,		P=[IPC], F=mDFMuX8e, S=11/31, R=21, E=\n, L=990,
		T=DNS/RFC822/SMTP,
		A=IPC $h
Mrelay,		P=[IPC], F=mDFMuXa8e, S=11/31, R=61, E=\n, L=2040,
		T=DNS/RFC822/SMTP,
		A=IPC $h

위의 수정에서 가장 중요한 flag 은 "e" 이다. 당신의 sendmail.cf 에서 이미 설정되어 있는 flag 들이 위에 기술된 내용과 같지 않더라도 상관이 없으며, 단지 "e" 를 추가해주는 것만으로 충분하다. "expensive" 를 의미하는 "e" 가 이미 존재한다면 또 하나의 "e" 를 덧붙일 필요는 없다. [2]


2.2.2. m4 소스를 사용하여 sendmail.cf 를 설정하기

아래의 설명에서는 편의상 sendmail 버전을 8.8.7 로 가정한다. 만약 다른 버전의 sendmail 을 사용하고 있다면 버전 번호를 자신의 것으로 교체하여 작업하면 되겠다. 아래 내용은 8.8.7 이전의 sendmail 에는 적용되지 않으므로 최신 버전의 sendmail 을 설치하기 바란다.

sendmail 소스를 다운로드한다. http://WWW.Sendmail.ORGftp://ftp.sendmail.org 에서 받을 수 있다.

나의 패치는 envelope sender reverse aliasing 과 그 외에 당신의 메일 환경을 제어할 수 있도록 하는 훌륭한 내용을 담고 있는데, 이것을 추천한다.

이 패치를 얻기 위해 (당신의 sendmail 버전이 8.8.7 이라면) Sendmail Patch 에게 "sendmail-8.8.7" 라는 제목으로 메일을 보내달라.

또한 패치들은 이 미니-하우투의 sgml 소스인 http://www.lege.com 에서도 얻을 수 있다!

만약 당신이 "외부메일은 큐에 걸어놓고 로컬메일을 우선적으로 발송하는" 기능만 원한다면 위에서 언급한 패치를 적용할 필요는 없다. 패치에는 다른 내용들도 많이 포함되어 있기 때문이다. 하지만 많은 리눅스 사용자들이 그 패치가 매우 유용하다고 생각할만큼 쓸모있는 내용이라고 확신한다. (원하는 경우라면 패치를 통해서 잘 동작하는 가상 도메인도 얻을 수 있다. 가상 도메인은 local 일 필요가 없으며 reverse aliasing 이라고 알려진 xaliases 를 제공한다.)

sendmail 소스를 풀면 /usr/src/sendmail-8.8.7/ 을 얻는다. /usr/src/sendmail-8.8.7/cf 으로 이동한다.

나의 패치를 원하는 경우라면 아래의 내용을 적용하고, 그렇지 않다면 이 단계는 건너뛴다 : 만약 procmail 을 로컬 MDA 로 사용하지 않는 경우라면 이 패치를 적용하기 전에 /usr/src/sendmail-8.8.7/cf/ostype/linux.m4 을 백업해 두어야 한다. 나의 패치를 /tmp/sendmail-8.8.7-cf-cpio-idcmu.gz 로 저장한 다음,

cd /usr/src/sendmail-8.8.7/cf
gzip -dc < /tmp/sendmail-8.8.7-cf-cpio-idcmu.gz | cpio -idcmu

만약 procmail 을 사용하지 않는다면 방금 백업해두었던 /usr/src/sendmail-8.8.7/cf/ostype/linux.m4 파일을 복구시킨다.

패치를 적용했든 적용하지 않았든 상관없이, 아래에 기술한 것과 비슷한 내용이 /usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mc 에 추가되어 있는지 확인해야 한다. (만약 패치를 적용하였다면 "elijah" 라는 문자열을 포함하는 파일이 /usr/src/sendmail-8.8.7/cf 아래에 존재하는지 조사해도 된다.) :

dnl # Defer Delivery to "expensive" mailers until next time the
dnl # queue is processed using "O HoldExpensive=True" and make
dnl # sure smtp mailers are "expensive".
dnl # (See original "sendmail" book Chapter 30: Options,
dnl # "Oc - Don't connect to expensive mailers", or
dnl # 2nd Edition "sendmail" book Chapter 34.8.29,
dnl # "HoldExpensive (c), Queue for expensive mailers".)
dnl #				/ Leif Erlingsson <leif@lege.com>
define(`confCON_EXPENSIVE', `True')
define(SMTP_MAILER_FLAGS, e)
MAILER(local)dnl
MAILER(smtp)dnl


2.3. 메뉴 지원에 대한 제안

원래문서의 1.x 버전은 /var/X11R6/lib/fvwm/system.fvwmrc 파일에 대한 메뉴 지원에 대한 내용을 담고 있었다. 현재는 이 내용을 생략했지만 필요하다면

Menu support suggestions 에게 "Menu support suggestions" 라는 제목으로 메일을 보내면 된다.


3. Dial-on-demand 를 사용하는 방법

Jan P Tietze 가 작성.

많은 리눅스 사용자는 다이얼업 회선으로 인터넷에 접속을 하고, 그들 대부분은 dialup on demand 방식으로 동작을 한다. 이는 로컬 네트웍이나 로컬 호스트에서 발생하는 어떤 종류의 IP 패킷이라도 ISP 로의 연결은 자동적으로 설정되고, 더 이상의 패킷 송수신이 없을 때 일정 시간이 지나면 자동적으로 접속이 끊어지는 방식을 뜻한다.

이는 매우 쾌적하고 저렴한 방법이긴 하지만, 단 한가지 경우에는 쾌적하지도 않고 (왜냐하면 모뎀으로 다이얼업을 하는 동안에는 매우 씨끄럽기 때문에) 저렴하지도 않은데, 이것은 바로 e-mail 을 보내는 작업을 하는 경우다. e-mail 은 통상 SMTP 로 보내지는데, SMTP 호스트는 보통 당신의 시스템이거나 인터넷상의 호스트 - 주로 당신이 사용하는 ISP 의 네트웍에 존재하는 호스트 - 가 된다.

다이얼업 회선을 사용하는 경우, 메세지를 보낼때마다 링크를 셋업 [3] 해야만 한다. 이런 방법은 메세지 하나를 보낼 때는 꽤 괜찮지만, 여러 메세지를 보내야 할 때 여러 번 ISP 에 연결하는 것은 지루하고도 비경제적이다. 또한 당신이 사용하는 ISP 가 접속하는 횟수를 제한한다면, 하루 중의 어떤 때에는 메세지를 보내지 못하고 미루어 둔 체 다음에 손수 보내야만 하는 일도 생긴다.

이 문서의 dialup on demand 가 아닌 방식 에서 이 문제가 해결되어 있긴 하지만, 외부 DNS 를 찾기 위해 ISP 로 접속하는 경우에는 단지 e-mail 이 큐에 걸리는 것 만으로도 접속이 유지된 채 남아있을 것이다. 이것은 sendmail 이 호스트명을 정규화(canonify) 하려고 시도하기 때문이다.

이에 대한 해결책은 두 부분으로 나누어진다: 하나는 sendmail.cf 를 약간 수정하여 실제적인 메일 전송작업을 정의하는 것이다. 개인적으로 나는 이 작업을 cron 을 이용해서 처리하는 것을 좋아하며, 필요한 내용은 이제부터 차근차근 기술하도록 하겠다.


3.1. sendmail.cf 설정하기

2절에서 설명한 이유때문에, 나는 sendmail.cf 를 직접 수정하는 것보다는 m4 소스를 사용하기를 권한다. 그렇게 하는 것이 괜한 수고를 더는 지름길이며 설정 변경을 상세하게 할 수 있다.

우선 2절에서 설명된 방법대로 수정을 가한다. 그리고 나서 dial on demand 에 관련된 내용을 처리한다.


3.1.1. 수정할 내용이 별로 없는 경우 sendmail.cf 에 직접 설정하기

직접 설정하는 것은 매우 비실용적이고 상세함과는 거리가 먼 방법이지만, 물론 이것은 당신이 선택할 문제이다.

sendmail.cf 의 끝부분 근처에 아래와 같은 내용이 있을텐데:

R$* < @ $* $˜P > $*		$: $1 < @ $[ $2 $3 $] > $4

행의 제일 앞에 # 을 추가하여 아래와 같이 되도록 하라.

#R$* < @ $* $˜P > $*		$: $1 < @ $[ $2 $3 $] > $4


3.1.2. m4 소스를 사용하여 sendmail.cf 를 설정하기

/usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mc 에 아래의 내용을 추가하라 :

FEATURE(nocanonify)dnl

최종적인 sendmail.cf 는 아래와 같은 명령행을 통해 생성된다. 새로운 내용을 덮어쓰기 전에 원래 설정파일인 /etc/sendmail.cf 을 백업해 두는 것을 잊지 않도록 하라.

cp /etc/sendmail.cf /etc/sendmail.cf.bak
cd /usr/src/sendmail-8.8.7/cf/cf
m4 yourhostname.smtp.mc > /etc/sendmail.cf


3.2. 다이얼 지연을 추가하기

다이얼 지연을 추가하는 것은 특히 모뎀을 사용하는 환경에서 유용한 방법이다. sendmail 이 e-mail 을 보내기 위해 외부와의 접속을 시도할 때 (이런 경우에 ISP 로의 링크가 셋업된다.) sendmail 이 타임아웃되는 시간보다 다이얼업 시간이 더 오래 걸리는 경우라면, 다이얼업 지연을 통해서 단순히 sendmail 이 몇 초 지난 다음에 연결을 시도하도록 만들 수 있다.


3.2.1. sendmail.cf 에 직접 설정하기

sendmail.cf 의 어딘가에 아래와 같은 내용이 있을텐데 :

#O DialDelay=10s

(또는 매우 유사한 내용이 있을텐데) "#" 을 제거하라. 만약 행의 첫 부분에 "#" 이 없다면 그대로 두는 것으로 좋다. (이것은 전에 이 설정이 적용되었음을 의미한다.)

만약 sendmail.cf 에 그런 내용이 없다면 추가해 주도록 한다. (sendmail.cf 의 options 부분에 추가하는 것이 바람직하다.)

O DialDelay=10s

"10s" 부분을 적당하다고 여겨지는 시간으로 고친다. (단위는 초)


3.2.2. m4 소스를 사용하여 sendmail.cf 를 설정하기

/usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mc 에 아래의 내용을 추가하라 :

define(`confDIAL_DELAY',`10s')

"10s" 부분을 적당하다고 여겨지는 시간으로 고친다. (단위는 초)

최종적인 sendmail.cf 는 아래와 같은 명령행을 통해 생성된다. 새로운 내용을 덮어쓰기 전에 원래 설정파일인 /etc/sendmail.cf 을 백업해 두는 것을 잊지 않도록 하라.

cp /etc/sendmail.cf /etc/sendmail.cf.bak
cd /usr/src/sendmail-8.8.7/cf/cf
m4 yourhostname.smtp.mc > /etc/sendmail.cf


4. e-mail 을 전송하기

e-mail 전송은 명령행 sendmail -q 을 실행함으로써 이루어진다. sendmail 이 실제적으로 작동하는 내용을 알고 싶은 사람은 sendmail -q -v 를 통해서 보다 자세한 전송과정을 볼 수 있다.

e-mail 전송을 자동화하는 것은 매우 편리한 일인데, 가장 널리 쓰이는 방법은 cron 을 이용하는 것이다.


4.1. e-mail 을 특정한 시간에 전송하는 방법

crontab 을 수정한다 :

crontab -e

아래와 같은 내용을 추가한다 :

05 18-23,0-7	* * Mon,Tue,Wed,Thu,Fri	/usr/sbin/sendmail -q
05 *		* * Sat,Sun		/usr/sbin/sendmail -q

보다 자세한 내용은 crontab man 페이지를 참고하기 바라며, (명령행 man 5 crontab 으로 가능하다.) 내 생각에는 적용된 내용이 꽤 명확한 것 같다. 위 예제에서 crontab 에 등록된 내용은 (메일 큐에 e-mail 이 걸려있는 경우에 한해서) 주중에는 오후 6시부터 오전 7시까지, 주말에는 하루종일 매 5분마다 [4] e-mail 을 전송하도록 하는 것이다.

dial on demand 사용자들은 때때로 하루 중 특정한 시점에서 POP3 를 이용하여 e-mail 을 모으는 것을 원하는 경우가 있다. 그렇다면 아래와 같은 내용을 crontab 에 추가하면 된다 :

0 21		* * * popclient -3 -u <your pop3 user name goes here>
			-p <put your password here>
			-o /var/spool/mail/<the user on your system that should receive the collected e-mail>
			<mailhost.somedomain.com>

위에서는 너무 길어서 여러 줄에 나누어 적었지만 실제로는 물론 한 줄로 적어야 한다.

위와 같이 한 다음, 파일을 저장하고 에디터를 종료한다. 이것으로 crontab 에 등록되었다.


5. License

This document is distributed under the terms of the GNU Free Documentation License. You should have received a copy along with it. If not, it is available from http://www.fsf.org/licenses/fdl.html.

주석

[1]

역주 : 메일 헤더에 찍히는 발신지 주소 정도를 의미하는 것 같습니다.

[2]

역주 : flag 은 위에서 F=... 라고 나타난 부분을 가리킵니다.

[3]

역주: ISP 에 연결하는 것

[4]

역주 : 5분간격이 아니라 정시에서 5분이 지난 시점만을 의미합니다.

Linux Mail-Queue mini-HOWTO

Linux Mail-Queue mini-HOWTO

조지완

    
   

v2.03, 2001-12-17, sendmail 8.8.7

이 문서에서는 외부 메일을 큐에 쌓아두고 로컬 메일을 전송하는 법에 대해 기술한다. sendmail 로 하여금 사용자가 "그래" 라고 할 때까지 외부 메일을 큐에 걸어두고 로컬 메일을 배달하도록 만드는 데 필요한 수정사항을 담고있다.

고친 과정
고침 0.12002-02-20고친이 조지완
최초 번역, 원문 V2.03, 2001-12-17, sendmail 8.8.7 에 대해

번역상의 오류가 있다면 로 알려주시기 부탁드리며, 이 미니-하우투의 원문은 이쪽 에서 보실 수 있습니다.


1. 들어가며

이 문서는 두 사람에 의해 작성되었다. dial on demand 를 사용하지 않는 방법은 오래된 것으로 Leif Erlingsson 에 의해 씌여졌고, dial on demand 를 사용하는 방법은 Jan P Tietze 에 의해 완성되었다.


2. dial on demand 를 사용하지 않는 방법

Leif Erlingsson 가 작성.

이 방법을 기술한 원 문서에는 불필요한 내용이 많이 포함되어 있다. 여기에 설명된 내용은 원본의 것을 모두 커버한다.


2.1. sendmail 을 기동하기

Slackware 등에서는 /etc/rc.d/rc.M 에 :

echo "Starting sendmail daemon (/usr/sbin/sendmail -bd -os) [queue only mode]..."
/usr/sbin/sendmail -bd -os		# NOT "-bd -q 15m", the "standard" flags!

RedHat 등에서는 /etc/rc.d/init.d/sendmail.init 에 :

echo -n "Starting sendmail: [queue only mode]"
daemon sendmail -bd -os		# NOT daemon sendmail -bd -q1h

와 같이 수정하도록 한다.

-os 옵션은 사실상 필수적인 것이 아니다. 이것이 하는 역할은 :

SuperSafe 옵션은 sendmail 이 매우 안전하게 작동하도록 보장한다.
심지어 사용자가 즉각적인 메일 전송을 원하는 경우에라도
sendmail 은 queue 에 메일을 쌓아두는 방법으로 처리하는데,
이것은 극히 드문 재앙(메일 전송시에 시스템이 다운되는) 등에도
전송중이던 메일을 안전하게 지키는데 기여한다.
이 옵션은 언제나 활성화되어 있어야만 한다.

하여간 이 내용은 sendmail.cf 에 디폴트로 적용되어있는 사항이다.


2.2. sendmail 을 설정하기

원칙을 지키는 (serious) sendmail 사용자는 아래에 제공되는 m4 소스를 사용하라. sendmail 을 업그레이드할 계획이 있고 sendmail.cf 를 별로 수정하지 않는 사용자는 m4 소스로 설정하는 편이 좋다.

만약 sendmail 설정을 수정해서 동적 IP 등을 사용하는 환경에서도 envelope return header [1] 등이 제대로 찍히기를 원하는 상황이 아니라면 아래의 m4 소스는 필요가 없다.


2.2.1. 수정할 내용이 별로 없는 경우 sendmail.cf 에 직접 설정하기

이런 방법은 sendmail 의 버전에 전적으로 의존하는 경향이 있으므로 아래에 설명된 내용은 sendmail-8.8.x 에만 해당됨을 일러둔다.

/etc/sendmail.cf 를 수정 :

# avoid connecting to "expensive" mailers on initial submission?
O HoldExpensive=True

... 다음으로 ...

#####  @(#)smtp.m4	8.33 (Berkeley) 7/9/96	#####

Msmtp,		P=[IPC], F=mDFMuXe, S=11/31, R=21, E=\n, L=990,
		T=DNS/RFC822/SMTP,
		A=IPC $h
Mesmtp,		P=[IPC], F=mDFMuXae, S=11/31, R=21, E=\n, L=990,
		T=DNS/RFC822/SMTP,
		A=IPC $h
Msmtp8,		P=[IPC], F=mDFMuX8e, S=11/31, R=21, E=\n, L=990,
		T=DNS/RFC822/SMTP,
		A=IPC $h
Mrelay,		P=[IPC], F=mDFMuXa8e, S=11/31, R=61, E=\n, L=2040,
		T=DNS/RFC822/SMTP,
		A=IPC $h

위의 수정에서 가장 중요한 flag 은 "e" 이다. 당신의 sendmail.cf 에서 이미 설정되어 있는 flag 들이 위에 기술된 내용과 같지 않더라도 상관이 없으며, 단지 "e" 를 추가해주는 것만으로 충분하다. "expensive" 를 의미하는 "e" 가 이미 존재한다면 또 하나의 "e" 를 덧붙일 필요는 없다. [2]


2.2.2. m4 소스를 사용하여 sendmail.cf 를 설정하기

아래의 설명에서는 편의상 sendmail 버전을 8.8.7 로 가정한다. 만약 다른 버전의 sendmail 을 사용하고 있다면 버전 번호를 자신의 것으로 교체하여 작업하면 되겠다. 아래 내용은 8.8.7 이전의 sendmail 에는 적용되지 않으므로 최신 버전의 sendmail 을 설치하기 바란다.

sendmail 소스를 다운로드한다. http://WWW.Sendmail.ORGftp://ftp.sendmail.org 에서 받을 수 있다.

나의 패치는 envelope sender reverse aliasing 과 그 외에 당신의 메일 환경을 제어할 수 있도록 하는 훌륭한 내용을 담고 있는데, 이것을 추천한다.

이 패치를 얻기 위해 (당신의 sendmail 버전이 8.8.7 이라면) Sendmail Patch 에게 "sendmail-8.8.7" 라는 제목으로 메일을 보내달라.

또한 패치들은 이 미니-하우투의 sgml 소스인 http://www.lege.com 에서도 얻을 수 있다!

만약 당신이 "외부메일은 큐에 걸어놓고 로컬메일을 우선적으로 발송하는" 기능만 원한다면 위에서 언급한 패치를 적용할 필요는 없다. 패치에는 다른 내용들도 많이 포함되어 있기 때문이다. 하지만 많은 리눅스 사용자들이 그 패치가 매우 유용하다고 생각할만큼 쓸모있는 내용이라고 확신한다. (원하는 경우라면 패치를 통해서 잘 동작하는 가상 도메인도 얻을 수 있다. 가상 도메인은 local 일 필요가 없으며 reverse aliasing 이라고 알려진 xaliases 를 제공한다.)

sendmail 소스를 풀면 /usr/src/sendmail-8.8.7/ 을 얻는다. /usr/src/sendmail-8.8.7/cf 으로 이동한다.

나의 패치를 원하는 경우라면 아래의 내용을 적용하고, 그렇지 않다면 이 단계는 건너뛴다 : 만약 procmail 을 로컬 MDA 로 사용하지 않는 경우라면 이 패치를 적용하기 전에 /usr/src/sendmail-8.8.7/cf/ostype/linux.m4 을 백업해 두어야 한다. 나의 패치를 /tmp/sendmail-8.8.7-cf-cpio-idcmu.gz 로 저장한 다음,

cd /usr/src/sendmail-8.8.7/cf
gzip -dc < /tmp/sendmail-8.8.7-cf-cpio-idcmu.gz | cpio -idcmu

만약 procmail 을 사용하지 않는다면 방금 백업해두었던 /usr/src/sendmail-8.8.7/cf/ostype/linux.m4 파일을 복구시킨다.

패치를 적용했든 적용하지 않았든 상관없이, 아래에 기술한 것과 비슷한 내용이 /usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mc 에 추가되어 있는지 확인해야 한다. (만약 패치를 적용하였다면 "elijah" 라는 문자열을 포함하는 파일이 /usr/src/sendmail-8.8.7/cf 아래에 존재하는지 조사해도 된다.) :

dnl # Defer Delivery to "expensive" mailers until next time the
dnl # queue is processed using "O HoldExpensive=True" and make
dnl # sure smtp mailers are "expensive".
dnl # (See original "sendmail" book Chapter 30: Options,
dnl # "Oc - Don't connect to expensive mailers", or
dnl # 2nd Edition "sendmail" book Chapter 34.8.29,
dnl # "HoldExpensive (c), Queue for expensive mailers".)
dnl #				/ Leif Erlingsson <leif@lege.com>
define(`confCON_EXPENSIVE', `True')
define(SMTP_MAILER_FLAGS, e)
MAILER(local)dnl
MAILER(smtp)dnl


2.3. 메뉴 지원에 대한 제안

원래문서의 1.x 버전은 /var/X11R6/lib/fvwm/system.fvwmrc 파일에 대한 메뉴 지원에 대한 내용을 담고 있었다. 현재는 이 내용을 생략했지만 필요하다면

Menu support suggestions 에게 "Menu support suggestions" 라는 제목으로 메일을 보내면 된다.


3. Dial-on-demand 를 사용하는 방법

Jan P Tietze 가 작성.

많은 리눅스 사용자는 다이얼업 회선으로 인터넷에 접속을 하고, 그들 대부분은 dialup on demand 방식으로 동작을 한다. 이는 로컬 네트웍이나 로컬 호스트에서 발생하는 어떤 종류의 IP 패킷이라도 ISP 로의 연결은 자동적으로 설정되고, 더 이상의 패킷 송수신이 없을 때 일정 시간이 지나면 자동적으로 접속이 끊어지는 방식을 뜻한다.

이는 매우 쾌적하고 저렴한 방법이긴 하지만, 단 한가지 경우에는 쾌적하지도 않고 (왜냐하면 모뎀으로 다이얼업을 하는 동안에는 매우 씨끄럽기 때문에) 저렴하지도 않은데, 이것은 바로 e-mail 을 보내는 작업을 하는 경우다. e-mail 은 통상 SMTP 로 보내지는데, SMTP 호스트는 보통 당신의 시스템이거나 인터넷상의 호스트 - 주로 당신이 사용하는 ISP 의 네트웍에 존재하는 호스트 - 가 된다.

다이얼업 회선을 사용하는 경우, 메세지를 보낼때마다 링크를 셋업 [3] 해야만 한다. 이런 방법은 메세지 하나를 보낼 때는 꽤 괜찮지만, 여러 메세지를 보내야 할 때 여러 번 ISP 에 연결하는 것은 지루하고도 비경제적이다. 또한 당신이 사용하는 ISP 가 접속하는 횟수를 제한한다면, 하루 중의 어떤 때에는 메세지를 보내지 못하고 미루어 둔 체 다음에 손수 보내야만 하는 일도 생긴다.

이 문서의 dialup on demand 가 아닌 방식 에서 이 문제가 해결되어 있긴 하지만, 외부 DNS 를 찾기 위해 ISP 로 접속하는 경우에는 단지 e-mail 이 큐에 걸리는 것 만으로도 접속이 유지된 채 남아있을 것이다. 이것은 sendmail 이 호스트명을 정규화(canonify) 하려고 시도하기 때문이다.

이에 대한 해결책은 두 부분으로 나누어진다: 하나는 sendmail.cf 를 약간 수정하여 실제적인 메일 전송작업을 정의하는 것이다. 개인적으로 나는 이 작업을 cron 을 이용해서 처리하는 것을 좋아하며, 필요한 내용은 이제부터 차근차근 기술하도록 하겠다.


3.1. sendmail.cf 설정하기

2절에서 설명한 이유때문에, 나는 sendmail.cf 를 직접 수정하는 것보다는 m4 소스를 사용하기를 권한다. 그렇게 하는 것이 괜한 수고를 더는 지름길이며 설정 변경을 상세하게 할 수 있다.

우선 2절에서 설명된 방법대로 수정을 가한다. 그리고 나서 dial on demand 에 관련된 내용을 처리한다.


3.1.1. 수정할 내용이 별로 없는 경우 sendmail.cf 에 직접 설정하기

직접 설정하는 것은 매우 비실용적이고 상세함과는 거리가 먼 방법이지만, 물론 이것은 당신이 선택할 문제이다.

sendmail.cf 의 끝부분 근처에 아래와 같은 내용이 있을텐데:

R$* < @ $* $˜P > $*		$: $1 < @ $[ $2 $3 $] > $4

행의 제일 앞에 # 을 추가하여 아래와 같이 되도록 하라.

#R$* < @ $* $˜P > $*		$: $1 < @ $[ $2 $3 $] > $4


3.1.2. m4 소스를 사용하여 sendmail.cf 를 설정하기

/usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mc 에 아래의 내용을 추가하라 :

FEATURE(nocanonify)dnl

최종적인 sendmail.cf 는 아래와 같은 명령행을 통해 생성된다. 새로운 내용을 덮어쓰기 전에 원래 설정파일인 /etc/sendmail.cf 을 백업해 두는 것을 잊지 않도록 하라.

cp /etc/sendmail.cf /etc/sendmail.cf.bak
cd /usr/src/sendmail-8.8.7/cf/cf
m4 yourhostname.smtp.mc > /etc/sendmail.cf


3.2. 다이얼 지연을 추가하기

다이얼 지연을 추가하는 것은 특히 모뎀을 사용하는 환경에서 유용한 방법이다. sendmail 이 e-mail 을 보내기 위해 외부와의 접속을 시도할 때 (이런 경우에 ISP 로의 링크가 셋업된다.) sendmail 이 타임아웃되는 시간보다 다이얼업 시간이 더 오래 걸리는 경우라면, 다이얼업 지연을 통해서 단순히 sendmail 이 몇 초 지난 다음에 연결을 시도하도록 만들 수 있다.


3.2.1. sendmail.cf 에 직접 설정하기

sendmail.cf 의 어딘가에 아래와 같은 내용이 있을텐데 :

#O DialDelay=10s

(또는 매우 유사한 내용이 있을텐데) "#" 을 제거하라. 만약 행의 첫 부분에 "#" 이 없다면 그대로 두는 것으로 좋다. (이것은 전에 이 설정이 적용되었음을 의미한다.)

만약 sendmail.cf 에 그런 내용이 없다면 추가해 주도록 한다. (sendmail.cf 의 options 부분에 추가하는 것이 바람직하다.)

O DialDelay=10s

"10s" 부분을 적당하다고 여겨지는 시간으로 고친다. (단위는 초)


3.2.2. m4 소스를 사용하여 sendmail.cf 를 설정하기

/usr/src/sendmail-8.8.7/cf/cf/yourhostname.smtp.mc 에 아래의 내용을 추가하라 :

define(`confDIAL_DELAY',`10s')

"10s" 부분을 적당하다고 여겨지는 시간으로 고친다. (단위는 초)

최종적인 sendmail.cf 는 아래와 같은 명령행을 통해 생성된다. 새로운 내용을 덮어쓰기 전에 원래 설정파일인 /etc/sendmail.cf 을 백업해 두는 것을 잊지 않도록 하라.

cp /etc/sendmail.cf /etc/sendmail.cf.bak
cd /usr/src/sendmail-8.8.7/cf/cf
m4 yourhostname.smtp.mc > /etc/sendmail.cf


4. e-mail 을 전송하기

e-mail 전송은 명령행 sendmail -q 을 실행함으로써 이루어진다. sendmail 이 실제적으로 작동하는 내용을 알고 싶은 사람은 sendmail -q -v 를 통해서 보다 자세한 전송과정을 볼 수 있다.

e-mail 전송을 자동화하는 것은 매우 편리한 일인데, 가장 널리 쓰이는 방법은 cron 을 이용하는 것이다.


4.1. e-mail 을 특정한 시간에 전송하는 방법

crontab 을 수정한다 :

crontab -e

아래와 같은 내용을 추가한다 :

05 18-23,0-7	* * Mon,Tue,Wed,Thu,Fri	/usr/sbin/sendmail -q
05 *		* * Sat,Sun		/usr/sbin/sendmail -q

보다 자세한 내용은 crontab man 페이지를 참고하기 바라며, (명령행 man 5 crontab 으로 가능하다.) 내 생각에는 적용된 내용이 꽤 명확한 것 같다. 위 예제에서 crontab 에 등록된 내용은 (메일 큐에 e-mail 이 걸려있는 경우에 한해서) 주중에는 오후 6시부터 오전 7시까지, 주말에는 하루종일 매 5분마다 [4] e-mail 을 전송하도록 하는 것이다.

dial on demand 사용자들은 때때로 하루 중 특정한 시점에서 POP3 를 이용하여 e-mail 을 모으는 것을 원하는 경우가 있다. 그렇다면 아래와 같은 내용을 crontab 에 추가하면 된다 :

0 21		* * * popclient -3 -u <your pop3 user name goes here>
			-p <put your password here>
			-o /var/spool/mail/<the user on your system that should receive the collected e-mail>
			<mailhost.somedomain.com>

위에서는 너무 길어서 여러 줄에 나누어 적었지만 실제로는 물론 한 줄로 적어야 한다.

위와 같이 한 다음, 파일을 저장하고 에디터를 종료한다. 이것으로 crontab 에 등록되었다.


5. License

This document is distributed under the terms of the GNU Free Documentation License. You should have received a copy along with it. If not, it is available from http://www.fsf.org/licenses/fdl.html.

주석

[1]

역주 : 메일 헤더에 찍히는 발신지 주소 정도를 의미하는 것 같습니다.

[2]

역주 : flag 은 위에서 F=... 라고 나타난 부분을 가리킵니다.

[3]

역주: ISP 에 연결하는 것

[4]

역주 : 5분간격이 아니라 정시에서 5분이 지난 시점만을 의미합니다.


ID
Password
Join
If you always postpone pleasure you will never have it. Quit work and play for once!


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-07-20 21:47:48
Processing time 0.0017 sec