最近のRedHat系のsendmailなんかの場合、
動かすだけならpostfixなんかよりもよっぽど設定は簡単で、
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnlにdnlをつけて、
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnlにして、必要に応じスマートホストを設定し、
define(`SMART_HOST',`mx.hogehoge.local')○/etc/mail/accessファイルを
localhost.localdomain RELAY localhost RELAY 127.0.0.1 RELAY 192.168.0 RELAY # LANのセグメント hogehoge.local RELAY # LANのドメインとかして、 ○/etc/mail/local-host-namesに
mail.hogehoge.local #自ホスト hogehoge.local # 自ドメインとか書いて、あとは、
# make # make restart service sendmail restart sendmail を停止中: [ OK ] sm-client を停止中: [ OK ] sendmail を起動中: [ OK ] sm-client を起動中: [ OK ] #で、動いちゃうんですが、 一応、sendmail.mcの意味を掘り下げてみようかと思います。
○/etc/mail/sendmail.mc
divert(-1)dnl include(`/usr/share/sendmail-cf/m4/cf.m4')dnl VERSIONID(`setup for Red Hat Linux')dnl#m4の必須項目と推奨項目 # mcファイルはOSTYPE()を最初に宣言し、MAILERを最後に宣言します。 # # OSTYPE() 必須 使用するOSの指定 # DOMAIN() 推奨 ドメイン全体に共通の情報 # FEATURE() 推奨 特殊な必要性の解決 # MAILER() 必須 必要な配信エージェント # OSTYPE(`linux')dnl
####################### # DEFINE #######################
# ちなみにsendmail.mcのコメント行は「dnl」で始まる行であって、 # 「#」で始まる行ではありません。 # このページは見やすいから「#」を使ってるだけです。 # また、末尾のdnlはm4でsendmail.cfを作成する際、 # 改行のような役割をするので、つけておいてください。
# 出力ログレベルの設定 # 9はだいたいsyslogのinfoに相当します。これくらいでちょうどでしょう。 # 0(少ない)~98(多い)まで設定できるが、 # 16以上はdebugレベルです。 # 15ですべてのSMTPコマンドが見れます。 dnl define(`confLOG_LEVEL', `9')dnl
# スマートホストの設定 # # このサーバーが、インターネット側から見て、 # 「DNS名の正引き結果とIPアドレスの逆引き結果が一致」 # しているならスマートホストの設定をしなくても送信は可能です。 # (厳密にはその必要はないのですが、 # そうでないサーバーからのSMTP接続が拒否されてしまう設定が最近非常に増えてます。) # # スマートホストを設定する必要性としては、 # # ・固定IP1個のプロバイダ契約で、正引きは設定できるが、逆引きの設定はできず、 # そのIPアドレスを逆引きするとプロバイダの名前が引ける。 # # ・メールサーバーがNAPTの内側(つまりLAN内)にあり、 # WAN側からLAN内のメールサーバーの名前引きはまったくできないが、 # DMZセグメントにメールゲートウェイ(メールリレー)サーバーがある # # ・キャンペーンサイトのメール送信などで、一度にたくさんのメールを送信するため、 # メール送信専用サーバーがある(名前引きなどで負荷がかかりますからね。) # # などの場合はスマートホスト、DMZなどにあるメールリレーサーバーを設定します。 # (IPアドレスじゃだめです。) # プロバイダのメールサーバーなんかを指定してもいいのかもしれません。 define(`SMART_HOST',`mx.hogehoge.local')
define(`confDEF_USER_ID',``8:12'')dnl
# trusted-userを設定する define(`confTRUSTED_USER', `smmsp')dnl
# trusted-usersファイルを設定する dnl define(`confCT_FILE', `/etc/mail/trusted-users')
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
# VRFY・EXPNコマンドの禁止 # このSMTPコマンドを打たれると # メールアドレスやエイリアスの情報を盗まれてしまうのです。
define(`confPRIVACY_FLAGS', `goaway')dnl
# メッセージサイズ上限の設定 # これで約10MBです。(本文と添付ファイルの合計サイズ) define(`confMAX_MESSAGE_SIZE', `10485760')dnl
# あて先数上限の設定 # たくさんばら撒かれるのも困るので。 define(`confMAX_RCPTS_PER_MESSAGE', `128')dnl
# 通過MTA数上限を24HOPまでにする # これはメールピンポン(ループ)を防止するための措置です。 define(`confMAX_HOP', `24')dnl
# 送信保留メールの再送信間隔を5分に define(`confMIN_QUEUE_AGE', `300m')dnl
# 送信保留メールを保持するのを5日(これは長い) define(`confTO_QUEUERETURN', `5d')dnl
# 送信失敗の通知タイミングを4時間に define(`confTO_QUEUEWARN', `4h')dnl
# SMTP-AUTHの設定 必要なければdnlをつけたままにする define(`confAUTH_OPTIONS', `A')dnl # これは必要ないです。 dnl define(`confAUTH_OPTIONS', `A p')dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
# STARTTLSを使うときの証明書置き場の設定 # 使うときはdnlをはずす dnl define(`confCACERT_PATH',`/usr/share/ssl/certs') dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt') dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem') dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem') dnl define(`confDONT_BLAME_SENDMAIL',`groupreadablekeyfile')dnl
# Load Averageが値まで上昇したとき、 # Sendmailの送信をいったんキューにためます dnl define(`confQUEUE_LA', `12')dnl
# Load Averageが値まで上昇したとき、 # Sendmailは接続受付を拒否する dnl define(`confREFUSE_LA', `18')dnl
IDENTのクエリの待ち時間を設定。0がよい。 define(`confTO_IDENT', `0')dnl
dnl define(`confMAX_DAEMON_CHILDREN', 12)dnl dnl define(`confCONNECTION_RATE_THROTTLE', 3)dnl
####################### # FEATURE ####################### dnl FEATURE(delay_checks)dnl FEATURE(`no_default_msa',`dnl')dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
# mailertableとvirtusertableのファイルを設定する FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
# すべての発信者アドレスにサーバーのホスト名が追加されます。 # ホスト名というのはFQDNです。 #「xxx@mail.hogehoge.local」みたいな感じになります。 # ※そうじゃなくて「xxx@hogehoge.local」にしたいというひとは # 下のほうのマスカレードを設定してください。 # /etc/hostsか、hostnameコマンドの文字列のどちらかで、 # FQDNとなっているものが@の後ろにくっつきます。 # # むしろ、/etc/hostsかhostnameのどちらにもFQDNが設定されていないと # (というか、自分の名前解決が正常にできなくなってしまうと) # Sendmailの動作がおかしくなってしまうことに問題がありますので、 # サーバーにFQDNと、このalways_add_domainは必ず設定しておきます。 FEATURE(always_add_domain)dnl
# /etc/mail/local-host_namesを使用するために必要です。 FEATURE(use_cw_file)dnl
# /etc/mail/trusted-usersから信頼するユーザーを読み込みます。 FEATURE(use_ct_file)dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
# /etc/mail/access を使用する FEATURE(`access_db',`hash -T -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
# なにはともあれ、Sendmailの設定はここから始まります。 # # 初期状態では、 # DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl # と、なっており、SMTP接続を受け付けるアドレスを127.0.0.1からに限定してます。 # # このままでは外部からのSMTP接続を受け付けられないので、 # dnl を先頭につけて、無効化するか、 # DAEMON_OPTIONS(`Port=smtp,Addr=192.168.0.1, Name=MTA')dnl # などと、接続をListenするインターフェースを指定します。 # # ただし、そのままではオープンリレー(誰でもかまわずリレーしてしまう)サーバーとなって # spamメール送信のための踏み台となってしまうので、 # /etc/mail/accessで適切にリレー制限を行う必要があります。 dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl dnl DAEMON_OPTIONS(`Name=MTA-v4, Family=inet, Name=MTA-v6, Family=inet6')
# 名前解決できないドメインからのメールも受け付けます FEATURE(`accept_unresolvable_domains')dnl
# このサーバーをMXレコードにしているドメインからの中継を許可します。 # あまりよいものではないので、dnlにしておくほうがよいでしょう。 dnl FEATURE(`relay_based_on_MX')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
# ここに書かれたドメインが送信メールに必ずつくようになります。 # 「マスカレード」といいます。 # 自分の好きなドメインがつけられるか、 # いやおうなしにサーバーのFQDNがつくかが、 # 上のalways_add_domainとの違いです。 MASQUERADE_AS(`hogehoge.local')dnl
# エンベロープアドレス # (SMTPコマンド中で「MAIL FROM:」で入力するとこです)で # マスカレードするらしいです。普通は必要ないです。 dnl FEATURE(masquerade_envelope)dnl dnl FEATURE(`.hogehoge.local')dnl
# rootからのメールの場合だけはマスカレードしないようにします。 EXPOSED_USER(`root')dnl
dnl MASQUERADE_DOMAIN(localhost)dnl dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
# # MAILER()マクロ # # 配信エージェントにsmtpとprocmailを使っているという宣言です。 # 必ず一番最後に書かなくてはなりません。 # Cyrus-IMAPを使う場合などは # MAILER(`cyrusv2')dnl # MAILER(smtp)dnl # などとしますが、普段は特別変更する必要もないでしょう。 # MAILER(smtp)dnl MAILER(procmail)dnl
