Linux自宅サーバー構築
LinuxサーバーTOP
BBS
Linuxサーバー構築
INFORMATION
LINK
MAIL
 

 

sendmailの設定

最終更新 2003年9月8日

それではメールサーバの設定です。こいつを動かせば自ドメインの短いメールアドレスつくりが放題となります。まず最初にsendmailがメール配信をできるかの確認をしましょう。Linuxに作ってあるユーザ宛にメールをmailコマンドで送ってみましょう。ユーザがあればそのユーザのメールボックスにメールを配信します。

テストユーザ”mltest”をつくります。パスワードはいりません。またsendmailが起動していない場合は起動します。

# useradd mltest

# /etc/init.d/sendmail start
sendmailを起動中: [ OK ]
sm-clientを起動中: [ OK ]

# mail mltest@gw01.vf.paopao.org ←@以降はサーバのFQDN
Subject: test [enterを押す]
testestestestestest [enterを押す] ←ここが本文です。
[enterを押す] ←空エンター
end [enterを押す]
. [enterを押す] ←ドットがあります。
Cc: [enterを押す]

# su - mltest ←mltestにかわる

$ mail
Mail version 8.1 6/6/93. Type ? for help.
"/var/spool/mail/mltest": 2 messages 2 new
>N 1 root@gw01.vf.paopao. Sun Sep 21 06:21 18/665 "test" ←受信しています。

& 1 ←”&”の後に読みたいメールの番号を入力して [enter]
Message 1:
From root@gw01.vf.paopao.org Sun Sep 21 06:21:58 2003
Date: Sun, 21 Sep 2003 06:19:35 +0900
From: root <root@gw01.vf.paopao.org>
To: mltest@gw01.vf.paopao.org
Subject: test

testestestestestest

end

&

$ exit
# userdel -r mltest


"&"の後に"q"を入力[enter]で終了します。最後にexitしてユーザmltestを削除しておきましょう。

それでは続いての作業です。rootあてにエラー情報、一日一回Logwatchが送られています。これらのメールを読むためにいちいちサーバにログインするのもめんどくさいのでクライアントPCのメーラーで受信できると簡単、便利です。まず最初にrootあてのメールをadminに変更してクライアントで受信してみます。

#vi /etc/aliases

#
# Aliases in this file will NOT be expanded in the header from
# Mail, but WILL be visible over networks or from /bin/mail.
#
# >>>>>>>>>> The program "newaliases" must be run after
# >> NOTE >> this file is updated for any changes to
# >>>>>>>>>> show through to sendmail.
#

中略

# Basic system aliases -- these MUST be present.
mailer-daemon: postmaster
postmaster: root

# Person who should get root's mail
root: admin


以下のようにエイリアスファイルを更新します。rootのメール送信先の変更は完了です。
# newaliases
/etc/aliases: 64 aliases, longest 10 bytes, 634 bytes total

SMTPサーバにはsendmailをPOPサーバにはipop3を使います。私はOSのインストール時にメールサーバを選択してインストールしました。とりあえず以下のコマンドでインストールされているか確認します。

# rpm -qa |grep sendmail
sendmail-8.12.8-6.90
sendmail-cf-8.12.8-6.90
# rpm -qa |grep imap
imap-2001a-18
php-imap-4.2.2-17.2

メールをクライアントPCまで運んでくれるPOPサーバの設定をしましょう。POPサーバの設定ファイルは/etc/xineted.dディレクトリの中のipop3というファイルです。それでは/etc/xinetd.dに移動して中を見てみましょう。

# cd /etc/xinetd.d
# ls
chargen daytime echo imaps pop3s services time-udp
chargen-udp daytime-udp echo-udp ipop2 rsync sgi_fam
cups-lpd dbskkd-cdb imap ipop3 servers time

このipop3というファイルを編集します。

# vi ipop3

# default: off
# default: off
# description: The POP3 service allows remote users to access their mail \
# using an POP3 client such as Netscape Communicator, mutt, \
# or fetchmail.
service pop3
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += HOST DURATION
log_on_failure += HOST
disable = no ←yesをnoに変更
}

そして、こいつはxinetdを経由して起動するようなっているのでxinetdを再起動してipop3を動かします。

# /etc/init.d/xinetd restart
xinetdを停止中:  [ OK ]
xinetdを起動中:  [ OK ]

さて、これらのサーバの設定ファイルは#ntsysvや#chkconfigでも同様に設定可能です。#ntsysvや#chkconfigで設定すれば起動設定ファイルの該当箇所もyes⇒noに書き換わります。またストップすれば逆にno⇒yesにかわります。

ホントかどうかimapで確認してみましょう。# less imap でimapの中を見ましょう。

# less imap

# default: off
# description: The IMAP service allows remote users to access their mail using \
# an IMAP client such as Mutt, Pine, fetchmail, or Netscape \
# Communicator.
service imap
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += HOST DURATION
log_on_failure += HOST
disable = yes
}

それでは続いてchkconfigでimapを起動設定します。そのあとに再度imapの中身を確認してyesがnoに書き換えられているかを見てみましょう。

# chkconfig imap on

# less imap

# default: off
# description: The IMAP service allows remote users to access their mail using \
# an IMAP client such as Mutt, Pine, fetchmail, or Netscape \
# Communicator.
service imap
{
disable = no ←変更されています。
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += HOST DURATION
log_on_failure += HOST
}

またntsysvの設定は以下のようになります。

# ntsysv

以上のように/etc/xinetd.dの中にあるファイルを直接編集してサーバソフトを起動してもよいですしntsvsy、chkconfigで設定をオンにしてもその結果/etc/xinetd.dの中にある該当の起動ファイルが変更されることがわかりました。

またいずれの方法で起動ファイルを変更してもxintedを再起動しましょう。

# /etc/init.d/xinetd restart
xinetdを停止中:  [ OK ]
xinetdを起動中:  [ OK ]

それでは実際にさきほどのrootのメールをユーザadminで受信できるか確認しましょう。メールアドレスは新しいユーザを追加することでメールを使うことができますがこのメールを使うだけのユーザがサーバにログインできる状態では問題があります。そこでメールを使うだけのユーザはシェルを無効にしてサーバにログインできないようにします。

# useradd -s /sbin/nologin admin
# passwd admin
Changing password for user admin.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

続いてadminでサーバにログインできるか実験してみましょう。

$ su - admin
Password:
This account is currently not available.

このようにユーザadminはサーバにログインすることができません。
それではクライアントPCのメーラーの設定です。クライアントのメーラーを設定しましょう。Outlook Expressの場合は起動したあとに「ツール」⇒「アカウント」もしくは「ファイル」⇒「ユーザ」⇒「ユーザの追加」でユーザを追加してください。

メールアドレス admin@paopao.org
POP3 192.168.0.11(サーバのIP)
SMTP 192.168.0.11(サーバのIP)
アカウント admin
パスワード adminのパスワード

以上をそれぞれ入力します。下の画像のように設定しました。

受信をするとrootのメールを受信できます。

sendmailの設定ファイルを見ていきます。設定の変更をするには/etc/mail/sendmail.cfを変更するのですがこのファイルを直接変更するのは大変なので「.mc」というファイルを編集してこの「.mc」ファイルからsendmail.cfを作ります。sendmail.cfを作るためには「m4」と「sendmail-cf」がインストールされている必要があります。それでは早速/etc/mail/sendmail.mcを見ていきましょう。sendmail.mcの最後の方にある、DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')
このままの設定ではサーバ内部からのみでしかメール配送を受け付けないようになっています。この状態ではメールをサーバで作ってから送信しなければなりません。そこで先頭にdnl(最後は小文字の「エル」です)を付けてこの行を無効にします。またdnlの後ろにはスペースが必要です。

# vi /etc/mail/sendmail.mc

dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

上書き保存したら、以下のコマンドを入力、実行しm4マクロプロセッサーで/etcディレクトリにsendmail.cfを作製します。すぐにコマンドプロンプトになればsendmail.cfが/etcディレクトリに作製されているはずです。(エラーが出たら最初から間違いを見直してやり直してみましょう。)

# m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

これで新しいsendmail.cfができましたのでsendmailを再起動します

# /etc/init.d/sendmail restart
sendmailを停止中: [ OK ]
sm-clientを停止中: [ OK ]
sendmailを起動中: [ OK ]
sm-clientを起動中: [ OK ]

しかしこれではインターネット上のほかのサーバにメールを送信できません。sendmailのデフォルトの設定はメールリレーが許可されていません。ここではメールリレーをipアドレスとネットワークの単位で許可をしていきます。/etc/mail/accessのファイルに以下の赤字部分を追加します。

#vi /etc/mail/access

# Check the /usr/share/doc/sendmail/README.cf file for a description
# of the format of this file. (search for access_db in that file)
# The /usr/share/doc/sendmail/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
192.168.0 RELAY

# makemap hash /etc/mail/access.db < /etc/mail/access

これで/etc/mail/access.dbが更新され、192.168.0.0/24のネットワークからメールリレーが可能です。

それでは送信テストをやってみましょう。いきなりほかの方にメールを送らないでまず、自分自身に送信、受信をしてみましょう。先ほど[admin]で自分自身あてにメールを作成して、送受信をしてみます。

送受信できました!!

 


linuxトップ | cupにもどる | お次upsの設定

linux自宅サーバーPAOPAO
リンクはご自由に!
yasu@paopao.org
 
パオパオ、ぱおぱお