sendmail

HOME
Red Hat 7.2
Laser5 7.2
GUI setting
Other OS
LAN
sendmail
pop, imap
fml (ML)
apache
samba
web browser
namazu
PDF writer
printer
CD-ROM
cron
Problems

新サイトに移転しました!!

ここをクリックして頂くと新サイトに移動します。


sendmail の設定

sendmail 8.11.6 が入っていました。

# rpm -q sendmail
# rpm -q sendmail-cf
# rpm -q m4
# rpm -q cyrus-sasl

で必要なパッケージが入っているか見てみると、私の場合は sendmail-cf が入ってないませんでした。インストール CD には入っていますので、

# rpm -ivh sendmail-cf-8.11.2-4.i386.rpm

で追加インストールしました。なお、インストール時に『全部』を選ぶとsendmail-cf も入っています。

(※まだ CD-ROM が読めないので、このファイルをネットワーク経由で読み取ってからインストールしました)

インストールしただけの状態だと、メールはローカルだけでしか使えませんので、メールを受信するには sendmail.cf の設定が必要です。(インストール状態で可能なのはローカル同士の送受信とローカルから外部への送信のみ)

sendmail.cf の作成

sendmail 8.11 は CF が使用できませんので、m4 で sendmail.cf を作ります。

/usr/share/sendmail-cf/cf にいろんな設定ファイルがありますが、 redhat.mc は /etc/mail/sendmail.mc と同じ内容で、cf.m4 のパスの書き方が違うだけです。また redhat.cf は /etc/sendmail.cf と同一内容でした。 ですので、/etc/sendmail.mc を編集してコンパイルすれば良いです。

下記の赤ボールドの部分を変更します。青ボールドの部分は自分のドメインに合わせます。

/etc/mail/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
define(`confAUTH_MECHANISMS', `LOGIN DEGEST-MD5 CRAM-MD5')dnl
TRUST_AUTH_MECH(`LOGIN DEGEST-MD5 CRAM-MD5')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(masquerade_envelope)dnl
MASQUERADE_AS(abcdef.ne.jp)dnl
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.
dnl 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
Cwlocalhost.localdomain

編集できたら、m4 で変換して sendmail.cf を作ります

# m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

SASL認証ライブラリの設定

/usr/lib/sasl/Sendmail.conf  の設定が pam なので、それを sasldb に書き換える。デフォルトの内容から赤ボールドの部分を変更します。
/usr/lib/sasl/Sendmail.conf
pwcheck_method: sasldb

ユーザの作成

# saslpasswd user ・・・userはSASL認証ライブラリで認証するためのもの。任意に設定できます。パスワードは2回入力します。

ここで与えたユーザー名とパスワードでSMTPが認証します。Outlook Express だと送信サーバーの設定で『このサーバーは認証が必要』にチェックし、『設定』でパスワードを設定します。

(ただ認証パスワードが暗号化できないが・・・?)

user@abcdef.ne.jp宛のメール(ジェネリックアドレス宛)を受けるための設定

/etc/mail/local-host-names に受け取るドメイン名を書きます。ここに書いたドメインのサブドメイン宛のメールも全て受け取ります。次の例なら、@abcdef.ne.jp も @xxx.abcdef.ne.jp もメールを受け取ります。この設定をしないとサーバー名だけしか受信しません(のはずです)。

/etc/mail/local-host-names
abcdef.ne.jp

受信メール拒否の設定

受信メールの拒否設定をします。特に受信拒否する必要がないなら、この設定は不要です。

/etc/mail/access に拒否したいメールアドレスを書きます。デフォルトは次の内容になっていますが、ここに IP アドレス、メールアドレス、ドメイン名などを記入して REJECT とすると、そのメールアドレスからのメールを受信前に拒否します。

/etc/mail/access
# Check the /usr/share/doc/sendmail-8.11.6/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail-8.11.6/README.cf is part of the sendmail-doc
# package.
#
# by default we allow relaying from localhost...
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY

基本は RELAY のようなので、RELAY という記述はあまり意味が無さそうです。REJECT を拒否したいだけ追加していきます。

記述したら、

#makemap hash access < access

とやって access.db を作ります。

なお、受信拒否した場合、送信元にはREJECTしたというエラーメールが戻ります。

また、上述の sendmail.mc に
FEATURE(`access_db',`hash -o /etc/mail/access.db')dnl
という行がありますが、この行が access を有効にしています。

sendmailを再起動する。

/etc/init.d/sendmail restart

不正中継しないか確認する。

kyoto.wide.ad.jp にWEBからチェックできるチェッカーがあるので試してみる。(上記設定で大丈夫でした。)