sendmail.mcの記述説明

divert(-1)
dnl This is the sendmail macro config file. If you make changes to this file,
dnl you need the sendmail-cf rpm installed and then have to generate a
dnl new /etc/sendmail.cf by running the following command:
dnl
dnl m4 /etc/mail/sendmail.mc > /etc/sendmail.cf
dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
dnl define(`STATUS_FILE', `/etc/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
dnl TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db',`hash -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
FEATURE(`dnsbl', `relays.ordb.org', `"550 Email rejected due to sending server misconfiguration - see "')dnl
EXPOSED_USER(`root')dnl
dnl This changes sendmail to only listen on the loopback device 127.0.0.1
dnl and not on any other network devices. Comment this out if you want
dnl to accept email over the network.
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires
dnl a kernel patch
dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')
dnl We strongly recommend to comment this one out if you want to protect
dnl yourself from spam. However, the laptop and users on computers that do
dnl not have 24x7 DNS do need this.
FEATURE(`accept_unresolvable_domains')dnl
dnl FEATURE(`relay_based_on_MX')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
Cwshidarezakura.com

Sendmail.mc 記述方法

・divert(-1)
以後書かれた文書は、sendmail.cf 作成時に一切無視される。但し、設定使用する文字に関しては全て読込まれ、sendmail.cf に反映される。

・divert(0)
以後に書かれた文章及び設定は全て反映され、sendmail.cf作成時に出力される。

・dnl
m4の性質上、sendmail.cfの作成時に余計な改行を入れてしまうため、 余計な改行を作らない様に各行最後に付ける。

・VERSIONID(`$Id: generic-bsd4.4.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $')dnl
sendmail.cf 作成時に埋め込むバージョン情報。無くても構わない

・OSTYPE(aix4)dnl
使用するOSを記述する。 これが記述されていないと、sendmailが正しく動作しない。

・DOMAIN(`generic')dnl
../domain/generic.m4 に記載されている設定を使って一般的なドメイン定義を行う。 これを設定しないと、メールの送信時にドメインが引けずにエラーが起こり、 送信者にメールが返ってくる。 恐らく複数ドメインを扱う際に、各ドメイン毎に設定を定義できるのだと思う。

・MAILER(`smtp')dnl
使用するメール配送エージェントの設定? 全ての設定の一番最後に記述する(例外あり) 通常は、smtpを設定すれば良い。
../mailer/smtp.m4 のファイルを参照して sendmail.cf を作成する。

・define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
popサーバーのmbox 形式のスプールやMaildir 形式のスプールをprocmailが使われるので通常は使用できる設定になっています。

・define(`ALIAS_FILE', `/etc/aliases')dnl

rootやpostmasterなど管理者宛のメールを転送先を指定するように通常はファイルを参照するようになっています。

・define(`DATABASE_MAP_TYPE', `dbm')dnl
sendmailで使用するデータベースタイプを"dbm"に固定する。以後タイプの指定が無かった場合はdbmになる。 デフォルトは"hash"

・define(`confPRIVACY_FLAGS',`goaway')dnl
SMTPコマンドの使用を制限する

・define(`confMAX_MESSAGE_SIZE',`1000000')dnl
ユーザーが受け取る事の出来る最大メッセージサイズ(byte)サーバーにスプールされる前に、受信を拒否する。設定する際は、400kbyte程プラスして設定する。 デフォルトは無制限

・define(`confMAX_HOP',`32')dnl
メールがループしていると判断されない、最大のホップ数を指定します。デフォルトは、17か25のどちらか

・FEATURE(`access_db', `dbm -o /etc/mail/access')dnl ・・・sendmail8.11.x以前
・FEATURE(`access_db', `dbm -T<TMPF> -o /etc/mail/access')dnl ・・・sendmail8.12.x以後
メールの転送を拒否・許可するドメイン・IPアドレス・メールアドレスを定義するファイルを 指定している。コメントがはずれているか確認します。SPAMをさせないため。 自分のサーバーのみ転送を許可ですので、自端末以外のアドレスを追加させます。
#] vi /etc/mail/access
各自ネットワークにあわせて設定する。
ネットワーク(LAN)を2枚装着した場合プライベートアドレスからの設定になります。
各ネットワーク構成でIPアドレスは変わりますので自ネットワークのアドレスを指定します。
192.168.0   RELAY   ……転送を許可(192.168.0.0)
192.168.1   REJECT   ……転送を拒否(192.168.1.0)
192.168.2   OK   ……転送を許可
203.139.160.104 REJECT ……自ネットワークのグローバルアドレス(LAN1枚の場合)
user1@test.co.jp   aaaaa[任意の文字列]   ……転送を拒否しaaaaa というコメントを送る。

@マーク以降に付ける自分のドメインを()括弧内に記述します。
・MASQUERADE_AS(`test.co.jp')dnl
送信者のメールアドレスのドメイン部分(ns1.test.co.jp , ns2.other.co.jo)をtest.co.jpに 変換して相手に送信する。
・MASQUERADE_DOMAIN(`ns1.test.co.jp')dnl
・MASQUERADE_DOMAIN(ns2.other.co.jp')dnl
変換するドメイン名が多い場合は下記の様に記述する。
・MASQUERADE_AS(`test.co.jp')dnl
・MASQUERADE_DOMAIN_FILE(`/etc/mail/masquerade-domain')dnl
[/etc/mail/mauquerade-domain]
ns1.test.co.jp
mail.test.co.jp
ns2.other.co.jp

FEATURE(masquerade_envelope) dnl
上記のマスカレード変換のドメインがメールヘッダ中の Return-Path が書き換えられないため、場合によっては、送信先のサーバから Unreturnable address rejected となってしまうためメールが届かないことがあります。Return-Path のアドレスも書き換えるには、dnlコメントをはずします。

・RELAY_DOMAIN_FILE(`/etc/mail/relay-domains')dnl
リレーを許可するドメインの指定する。 ローカルのアドレスは未設定でもリレーを許可している。

・FEATURE(`mailertable',`dbm -o /etc/mail/mailertable')dnl
メールの転送経路を /etc/mailertable に設定する。
[/etc/mail/mailertable]
mail.domain1.co.jp esmtp:domain1.test.co.jp……転送先サーバー名
mail.domain2.co.jp esmtp.domain2.test.co.jp……転送先サーバー名
mail.domain3.co.jp esmtp:domain3.test.co.jp……転送先サーバー名
domain.co.jp local:……local にスプール

・FEATURE(`nullclient', `smtp.test.co.jp.')dnl
全てのメールの転送を、smtp.test.co.jp に転送する。 但し、localでのスプールを一切しなくなるので注意。

・define(`SMART_HOST', `smtp.test.co.jp')dnl
全てのメールの転送を、smtp.test.co.jp に転送する。 但し、local宛てのメールはスプールする。
以下 ../domain/generic.m4 より

・define(`confFORWARD_PATH', `$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward')

・define(`confMAX_HEADERS_LENGTH', `32768')dnl
最大ヘッダー長=32768 (デフォルト値)

・FEATURE(`redirect')dnl
/etc/mail/aliase にuser1:new-user1@test.co.jp.REDIRECTと指定すると 551 5.1.1 User has moved; please try new-user1:test.co.jp というメッセージを送信者に送り返す。旧バージョンではデフォルトは定義無し

・FEATURE(`use_cw_file')dnl
/etc/mail/local-host-names を参照するようになる。 local-host-names は旧バージョンのsendmail.cw や sendmail.aa になり、このホストで受信するドメイン名を記述する。

・EXPOSED_USER(`root')dnl
マスカレードしないユーザー名を記述する。複数いる場合は下記の様に記述する。通常はroot@ローカルネームとして送信しますのでdnlでコメントにして無効とします。
[generic.m4]
EXPOSED_USER(`/etc/mail/exposed-users')dnl
[/etc/mail/exposed-users]
root
postmaster
admin

DEMON_OPTIONS('port=smtp,Addr=127.0.0.1,Name=MTA')dnl
初期インストールではsendmailのサービスが起動している状態なのでメール送信の中継が出来ないように自分自身(自コンピューターのみ)でしかメール送信を受け付けないようになっているのでdnlでコメントアウトにして他のコンピューターからも送信を受け付けるようにします。

戻る