Sendmail은 매우 복잡한 규칙을 사용하여 환경 설정을 한다. 이것들을 사용하여 다양한 작업을 할 수 있지만 sendmail.cf 파일을 처음부터 직접 작성하는 것은 일반적이지 않고 또 많은 시간이 걸린다. 굳이 이런 작업을 하고 싶다면 이 문서 읽는 것을 지금 멈추고 O'Reilly 에서 출판된 "Bat Book"을 읽는 것이 좋다.
우리는 이 규칙들을 직접 손으로 쓰지 않고 sendmail과 함께 배포되는 파일들로부터 m4 매크로 프로세서를 이용하여 설정 파일을 만들 것이다.
먼저 senamail.mc 파일의 첫번째 몇 줄을 보자
include(/usr/lib/sendmail.cf/m4/cf.m4) VERSIONID(sendmail.mc - <url url="mailto: roessler@guug.de" name="roessler@guug.de"> OSTYPE(debian) define(`ALIAS_FILE',`/etc/mail/aliases')
첫부분에서 cf.m4가 include되었다. 이 m4 매크로 파일은 파일의 나머지 부분에서 사용될 다양한 매크로 정의들을 포함하고 있다. 이때 파일의 경로 가 맞는지 확인해야 한다 - 여기서 사용하는 경로는 Debian GNU/Linux에서 사용하는 것들이다. OSTYPE 매크로는 몇몇 설정 값에 대해 ?淪?기본값을 지정해 준다. 만일 사용자가 Debian 시스템을 사용하지 않는다면 "debian" 을 "linux"로 바꾸는 것이 좋다. ALIAS_FILE은 sendmail이 alias 리스트 를 어디에서 찾아야 하는지 알려준다.
다음 부분은 sendmail에게 genericstable 기능을 사용하도록 지정하고 , 이때 필요한 설정 파일을 찾을 곳을 지정하고 있다.
FEATURE(masquerade_envelope) FEATURE(genericstable, `hash -o /etc/mail/genericstable') GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
이제 소위 smart host라고 불리는 것을 정의해야 한다. 이것은 사용자의 시스템을 위해 외부로 나갈 메일을 처리할 머신을 말한다. 이것은 사용자의 ISP의 POP이나 IMAP 서버와는 다를 것이다. 만일 의심스럽다면 ISP에 연락 하여 확인하는 것이 좋다. 주 설정 파일의 코드는 다음과 같다 :
define(`SMART_HOST',`mail-out.your.provider')
마지막 두 줄은 sednamil이 다양한 메일 형태를 다루는 방법에 대해 알도록 하기위해 필요한 "mailer" 정의를 포함하고 있다 :
MAILER(local) MAILER(smtp)
# m4 sendmail.mc > _sendmail.cf # mv -f _sendmail.cf sendmail.cf
우리는 먼저 어떤 주소가 로컬로 간주되는지를 sendmail에게 알려줘야 한다. (이 주소들의 address rewriting의 대상이 된다) 이것은 매우 간단하다: 단지 사용자 머신의 호스트 이름을 /etc/mail/genericdomain에 적으면 된다 사용자 호스트의 전체 이름을 알려면 다음과 같이 입력하면 된다 :
$ hostname -f
harry <url url="mailto: harryx@your.isp" name="harryx@your.isp"> maude <url url="mailto: maudey@her.isp" name="maudey@her.isp"> root <url url="mailto: fredx@your.isp" name="fredx@your.isp"> news <url url="mailto: fredx@your.isp" name="fredx@your.isp">
Sendmail은 성능을 높이기 위해 텍스트 파일을 직접 사용하지 않고 해쉬된 버전을 사용한다. 해쉬된 버전을 만들어내려면 다음과 같이 입력 한다 :
# makemap -r hash genericstable.db < genericstable
aliases 파일은 로컬 메시지에만 유효한 추가적인 몇 개의 로컬 이름을 담고 있다. 이것은 사용자의 시스템으로부터 자동적으로 생성되는 메시지를 수신하는 루트 같은 관리자 계정에 유용하다.
/etc/mail/aliases는 다음과 같은 형태일 것이다.
root: fred news: root postmaster: root mail: root www: root nobody: /dev/null MAILER-DAEMON: nobody
genericstable과 같이 aliases도 많은 항목을 담고 있을 수 있다. 그러므로 sendmail이 텍스트 파일을 직접 사용하는 것은 성능면에서 좋지 않다. genericstable 에서 사용한 것과 같은 방법이 aliases에도 사용된다. 즉 해쉬된 데이터베이스가 만들어진다. makemap을 직접 사용하는 대신 newaliases 명령어를 사용하면 된다. 이 명령어가 필요한 모든 작업을 자동으로 수행한다.