[Linux]-[sendmail] sendmail.mcマクロ一覧

  • 投稿日:
  • by
  • カテゴリ:

Cwlocalhost.localdomain
自分のホスト名(localhost.localdomain)をリスト(クラスと言います)に追加しています。


DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
SMTP サーバのTCP/IPポートのオプションが設定されています。
ここで、Addr=127.0.0.1は、IPアドレス127.0.0.1のループバックアドレスで起動することを設定しています。ループバックアドレスは、ローカルからしか接続できないため、このコマンドがあるとネットワーク越しの接続はできません。
このコマンドの無いデフォルトでは、

DAEMON_OPTIONS(`Port=smtp, Name=MTA') :smtpポート(25)でMTAを起動
DAEMON_OPTIONS(`Port=587, Name=MSA, M=E') :587ポートでMSAを起動。ETRNを受けつけません。

が設定されている状態になっています。このコマンドは、複数設定することができ、最初の一つは、この2行の1行目を置き換えますが、二つめ以降は次々に追加され、追加されたぶんだけサーバ(デーモン)が起動します。
デフォルトの2行目はそのまま残ってしまうため、これを削除するには、FEATURE (`no_default_msa')を使います。


DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')
smtpサーバのTCP/IPポートのオプションです。IPV6用のオプションが設定されています。.


define(`ALIAS_FILE', `/etc/aliases')
aliasesファイルの場所です。デフォルトは/etc/mail/aliasesです。


define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
認証メカニズムのリストです。
デフォルトでは`GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5'が設定されています。


define(`confAUTH_OPTIONS', `A')
認証に成功した時だけ認証情報(MAIL FROM に AUTH=・・・)が付けられます。


define(`confAUTO_REBUILD')
aliases.dbデータファイルの自動再構築を行なう設定です。
コマンドが有効であればtrue、無ければ(デフォルト)falseです。
有効にするのはセキュリティ上あまりお勧めできません。


define(`confDEF_USER_ID',``8:12'')
デフォルトのユーザIDの設定です。
ユーザIDは8(mail)、グループIDは12(mail)です。デフォルトは1:1です。


define(`confDELIVERY_MODE',queueonly)dnl
sendmailの配送モードの設定でメールを受け取った後での配送の設定です。

background :バックグラウンド(非同期的な)配送
deferred :遅延(そのままの形で保持する)配送 (8.7以降)
interactive :インタラクフィブ(同期的な)配送
queueonly :キューを用いた(保持するが処理を加える)配送


define(`confDOMAIN_NAME', `$w.$m')dnl
この(自分の)FQDNを「host.domain.com」(例)として指定。" Dw "," Dm "と共に使う


define(`confDONT_PROBE_INTERFACES',true)
インターフェースのアドレス(マシンのアドレス)から、名前を取得して自動的にローカルホストの別名リスト(クラスw)に追加しないようにしています。
デフォルトはfalseです。クラス{w}とは/etc/mail/local-host-namesで設定したもの


define(`confFALLBACK_MX', `example.com')dnl
再送専用ホスト設定。
DNSが引けなかった場合、全MXに対してメールが送れなかった場合再送queueを特定のホストに送る。


define(`confFORWARD_PATH', `$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward')dnl
.forward(転送設定)ファイル設置場所


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


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


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


define(`confMIN_QUEUE_AGE', `15m')
何らかの原因で受け取ったメールが送信・転送できなかった場合(相手のメールサーバーが止まっていたり、忙しかった場合など)、一時的にメールを/var/spool/mqueue/に溜めこみ、あるタイミングで再送信を試みる。
この再送信のタイミングを指定することが出来る。設定できる時間単位にはm(分) h(時間) d(日) の3種類がある。この例では短めの15分に指定している。


define(`confOPERATORS', `.:@!^/[]+')dnl
この例のように、使用できる特殊記号の中に「%」を記述しない
ことでソースルーティングを禁止することができる。


define(`confPRIVACY_FLAGS',`goaway')dnl
SMTPコマンドの使用を制限する(プライバシフラグの指定)

goaway -- SMTPは相手のサーバーにどのようなユーザーがいるかを調べるVRFYコマンドや、メーリングリストにはどのようなメンバーがいるかを調べるEXPNコマンドがある。これらのプライバシー に関するコマンドを制限する。
authwarnings -- 問題がある場合はメールのヘッダX-Authentication-Warning:を添付
novrfy -- VRFY(ユーザの存在を確認するコマンド)を拒否
noexpn -- EXPN(メーリングリストのすべての受信者を表示するコマンド)を拒否
restrictqrun -- キューの処理を行なえるユーザを制限(rootとキューディレクトリの所有者)します。
restrictmailq -- 一般ユーザーにmailqコマンドを制限します。


define(`confQUEUE_LA', `12')
高負荷時に、メールの配送を行なわずにキューに入れることによっ負荷をさらに上昇させないようにすることができます。
ここでは、配送するかキューに入れるかを判断するためのパラメータを設定しています。パラメータは他にもありますが、ここで設定するのは閾値になります。
サーバが高性能で多くのプロセスに耐えられる場合は大きめの値を設定しましょう。デフォルトは8です。


define(`confREFUSE_LA', `18')
高負荷時に、メールの受信を拒否し負荷をさらに上昇させないようにすることができます。
ここでは、拒否するかどうかを判断するための閾値を設定しています。サーバが高性能で多くのプロセスに耐えられる場合は大きめの値を設定しましょう。デフォルトは12です。


define(`confSMTP_LOGIN_MSG', `$j Domain YOU/Original; $b')dnl
SMTPでメールサーバーにアクセスすると、サーバーが使用しているメールデーモンの名前とバージョン名が表示される。
この例のように表示させる内容を変えることによって、使用しているバージョンを秘匿することが出来る。


define(`confTO_CONNECT', `1m')
他のホストとの接続に失敗したときのタイムアウト時間です。
指定が無ければ、システムのデフォルトの時間が設定されます。Linuxの場合は90分です。


define(`confTO_IDENT', `0s')dnl
IDENT認証を行わない。IDENT認証はあまり効果的な認証とは思えないので、使用しない。
この例でタイムアウトを0秒にすることで、応答待ち時間を省略することが出来る。(デフォルトでは30秒)


define(`confTO_QUEUEWARN', `1h')dnl
メールが配送できなかったために、「今から何日間か配送を試みます」という旨のメールを送信者に自動通知する。この例ではキューに溜めた時点から1時間後に送信者に自動通知させている。


define(`confTO_QUEUERETURN', `1d')
キューに溜め込んだメールをどれ位の期間保存しておくかを指定させる。
ここで指定した時間を過ぎると、メールは消去され、送信者にその旨報告するメールを送る。
この例では1日(24時間)に指定している。


define(`confTRY_NULL_MX_LIST',true)
MXレコードを無視して直接ホスト接続するか


define(`confTRUSTED_USER', `smmsp')
sendmailに関連するファイルの起動を行なうために信頼されたユーザ


define(`confUSERDB_SPEC', `/etc/mail/userdb.db')
ユーザ・データベースの場所を指定しています。
ユーザ・データベースはアドレスを書き換えるためのデータベースで、aliaseと~/.forwardの間で参照されます。


define(`DATABASE_MAP_TYPE', `dbm')
define(`DATABASE_MAP_TYPE', `hash')

sendmailで使用するデータベースタイプを指定する。
以後タイプの指定が無かった場合は指定したタイプになる。


define(`MAIL_SETTINGS_DIR', `/etc/mail/')dnl
コンフィグファイルなどを格納するディレクトリを/etc/mail/に指定


define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
procmailプログラムの場所です。デフォルトは/usr/local/bin/procmailです。


define(`SMART_HOST', `smtp.test.co.jp')dnl
全てのメールの転送を、smtp.test.co.jp に転送する。 但し、local宛てのメールはスプールする。


define(`STATUS_FILE', `/etc/mail/statistics')
ステータスファイルを指定しています。ステータスファイルは、配信エージェントの統計情報が記録されています。
/etc/mail/statisticsはデフォルトで設定されますので、変更する場合はコマンドを有効にします。統計情報はmailstatsというコマンドで参照することができます。


define(`UUCP_MAILER_MAX', `2000000')
UUCPメイラが処理可能な最大サイズ


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


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


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


Dmdomain.com
この(自分の)ドメイン名を「domain.com」(例)として指定。


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


Dwhost
この(自分の)メールサーバーのホスト名を「host」(例)として指定。


EXPOSED_USER(`root')
マスカレードしないユーザー名を記述する。複数いる場合は下記の様に記述する。

[generic.m4]
EXPOSED_USER(`/etc/mail/exposed-users')

[/etc/mail/exposed-users]
root
postmaster
admin


FEATURE(`accept_unresolvable_domains')
DNSによる名前解決のできないドメインを持つアドレスでも受け付けます。
この設定がない場合は拒否されます。


FEATURE(`access_db', `hash -o /etc/mail/access')dnl ・・・sendmail8.11.x以前
FEATURE(`access_db', `hash -T -o /etc/mail/access')dnl ・・・sendmail8.12.x以後

メールの転送を拒否・許可するドメイン・IPアドレス・メールアドレスを定義するファイルを 指定している。 ローカルのアドレスは未設定の場合、転送を許可する。
「-o」でファイルがなくてもエラーにしないようにします。

[/etc/mail/access]
192.168.0   RELAY   ......転送を許可
192.168.1   REJECT   ......転送を拒否
192.168.2   OK   ......転送を許可
user1@test.co.jp   aaaaa[任意の文字列]   ......転送を拒否しaaaaa というコメントを送る。


define(`ALIAS_FILE', `/etc/mail/aliases')
エイリアスファイルの指定


FEATURE(`always_add_domain')
ローカル配送されたメールにもドメイン名を付加する


FEATURE(`blacklist_recipients')
メールを受け取らない受信者をaccess_dbに設定することができるようになります。


FEATURE(`drac')dnl
POP Before SMTP(drac)を使用する。


FEATURE(delay_checks)
メールの転送、受信の可否の判定を行なう順番が変更され、状況によっては一部は実行されなくなります。
これにより複雑な状況に対応することもできるようになりますが、不用意に設定するとSPAMなどが素通りしてしまう可能性があります。


FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')
procmailをローカル(local)の配信エージェントに指定します。
procmailの場所はPROCMAIL_MAILER_PATHで設定されます。
先にPROCMAIL_MAILER_PATHを設定しておく必要があります。
`procmail -t -Y -a $h -d $u'は、コマンドラインオプションと引数を表していますが、デフォルトは、`procmail -t -Y -a $h -d $u'です。「-t」は、配送を際挑戦するオプションです。


FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
mailertableを有効にし、そのデータベースの型と場所が設定されています。
「-o」でファイルがなくてもエラーにしないようにします。

[/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(`masquerade_envelope')
エンベロープをMASQUERADE_ASでマスカレードする


FEATURE(`no_default_msa',`dnl')dnl
RFC 2476で定義されているMessage Submission Agentを使用しない。
これを使用しない定義にすることで、Port587を閉じることが出来る。


FEATURE(nocanonify)dnl
MAILER_DEFINITIONS
Msmtpf, P=/usr/lib/smtpfeed, F=mDFMuXz!_, S=11/31, R=21, E=\n, L=990,
T=DNS/RFC822/SMTP, M=5000000, A=smtpfeedsmtpfeedを有効にする。


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


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(`relay_based_on_MX')
MXによる転送制限を有効にします。


FEATURE(`smrsh',`/usr/sbin/smrsh')
プログラムにメールを渡すときのシェルとして、shのかわりに、専用のsmrshを使用します。smrshのパスが設定されています。


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


FEATURE(use_ct_file)
信頼されたユーザのユーザ名を/etc/mail/trusted-users ファイルから読み込む。
-f オプションでエンベロープFromを指定した時、これを明示的に変更すると偽装された可能性を示すヘッダが追加されるが、このリストにユーザ名があれば追加されない。


FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')
virtusertableを有効にし、そのデータベースの型と場所が設定されています。
「-o」でファイルがなくてもエラーにしないようにします。


LOCAL_DOMAIN(`localhost.localdomain')
自ドメン名の指定


MAILER(procmail)
配送エージェントの設定です。procmailを使用することが設定されています。


MAILER(`smtp')dnl
配送エージェントの設定です。
smtp(メールの転送)を使用することが設定されています。必ず設定しましょう。


MASQUERADE_AS(`test.co.jp')dnl
MASQUERADE_DOMAIN(`ns1.test.co.jp')dnl
MASQUERADE_DOMAIN(`ns2.other.co.jp')dnl

ホスト名を別名に見せかける(マスカレードする)
送信者のメールアドレスのドメイン部分(ns1.test.co.jp , ns2.other.co.jo)をtest.co.jpに 変換して相手に送信する。
変換するドメイン名が多い場合はファイルを作成する。


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


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


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


TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
ここで設定されている認証メカニズムを用いて認証を行ないます。


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