カテゴリー別アーカイブ: サーバ関連

サーバ・サービスに関するTipsです。

Binc IMAP + fetchmail + procmailにてIMAPメールサーバーを構築

対象OS

Mac OS X 10.3 (Panther)
Mac OS X 10.4 (Tiger)
Mac OS X 10.5 (Leopard)

使用ソフト

  • bincimap 1.2.13 final

Binc IMAP のインストールと設定

インストールの前に

Binc IMAP のインストールには MacPorts を使用する。port (MacPorts のコマンド)をまだインストールしていない場合は、インストールしておく。(インストールの仕方はココをクリック)

インストール

# port -d selfupdate
# port install bincimap

必要なパッケージがあれば自動的にインストールされるし、インストールの際はコンパイルが行われるので、インストールには数分かかる。

設定

ファイルのコピー

# cd /opt/local/etc/bincimap

# cp pam/bincimap.sample /etc/pam.d/bincimap
# cp bincimap.conf.sample bincimap.conf

bincimap 起動ファイルの作成

Leopard の場合

# cd /Library/LaunchDaemons
# vi imap.plist

-- 以下の内容を記述する
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>Label</key>
        <string>imap</string>
        <key>Nice</key>
        <integer>-7</integer>
        <key>ProgramArguments</key>
        <array>
                <string>/opt/local/bin/bincimap-up</string>
                <string>--conf=/opt/local/etc/bincimap/bincimap.conf</string>
                <string>--logtype=syslog</string>
                <string>--</string>
                <string>/opt/local/bin/checkpassword-pam</string>
                <string>-s</string>
                <string>bincimap</string>
                <string>/opt/local/bin/bincimapd</string>
        </array>
        <key>ServiceDescription</key>
        <string>binc IMAP</string>
        <key>Sockets</key>
        <dict>
                <key>imap143</key>
                <dict>
                        <key>SockServiceName</key>
                        <string>imap</string>
                </dict>
        </dict>
        <key>inetdCompatibility</key>
        <dict>
                <key>Wait</key>
                <false/>
        </dict>
</dict>
</plist>

ここをクリックして次の章へジャンプ。

Tiger 以前の場合

# cd /opt/local/etc/bincimap

# cp xinetd/imap.sample /etc/xinetd.d/imap

bincimap.conf の修正

# vi /opt/local/etc/bincimap/bincimap.conf

-- 黄色のように変更する

-- 18行目あたり
   allow plain auth in non ssl = "yes", ... SSL/TLS でなくても
					アクセス可能にする

-- 48行目あたり
//    environment ip variable = "TCPREMOTEIP"
	... コメント化して無効にしておく

-- 53行目あたり
    depot = "IMAPdir", ... スタイルの定義

-- 59行目あたり
    path = "Library/Maildir", ... メールボックスの位置と名前
	... Mac OS X の流儀にならってライブラリの下に格納する




syslog.conf の修正

Binc IMAP のログ情報を出力するようにする。ログ出力を必要としない場合、記述する必要はない。

# vi /etc/syslog.conf

-- 以下の行をファイルの一番下などに追加する。

daemon.*		/var/log/daemon.log

weekly の修正

Leopard では以下の設定は不要なのでここをクリックしてスキップする。

上記「syslog.conf の修正」にて Binc IMAP のログ情報を出力している場合には、こちらも必ず設定する。そうでないと、ログが延々ふくらみ続けて、やがて HDD をフルにしてしまう。(まあ、そこまでいくにはかなりかかるけれど)

# cd /etc
# chmod u+w weekly ... 一旦書き込みを許可にする
# vi /etc/weekly

-- 黄色部分が追加項目
-- 35 行目あたり
for i in ftp.log lookupd.log lpr.log mail.log netinfo.log hwmond.log
 ipfw.log ppp.log secure.log daemon.log; do

# chmod u-w /etc/weekly ... 元通り書込み禁止にしておく

Binc IMAP の稼動

Leopard の場合

# launchctl load /Library/LaunchDaemons/imap.plist

Tiger の場合

# kill -HUP `cat /var/run/xinetd.pid`
	... 2ヶ所とも ' ではなく ` (バッククォート)

または Mac を再起動しても良い。

procmail の設定

procmail は OS X に標準でインストールされているので設定のみ。

.procmailrc の設定

$ vi $HOME/.procmailrc

-- ここから
PATH=/usr/bin:/usr/local/bin:/opt/local/bin
LOCKFILE=$HOME/.lockmail
MAILDIR=$HOME/Library/Maildir
DEFAULT=INBOX/new
# LOGFILE=$HOME/procmail.log ... テストが終わるまでは有効化しておく
-- ここまで

※一見、procmail は必要なさそうに見えるが、fetchmail のみでは Maildir に配信できないために必要。また、spamprobe にて迷惑メールフィルタを構築する際にも必要となる。

fetchmail の設定

fetchmail は OS X に標準でインストールされているのでここでは設定のみ。

.fetchmailrc の作成

$ vi $HOME/.fetchmailrc

-- ここから
defaults
 protocol pop3
 no rewrite
 no mimedecode
# keep ... テストが終わるまではここを有効化 (# を取る)して
	サーバーにメールを残しておくとよい
 forcecr
 mda "/usr/bin/procmail"

poll Pop.Server.Domain ... 各自の POP3 サーバーを指定
 port ### ... 特別に port 番号を設定したいときは ### にポート番号を入れる(省略可)
 username Watashi@Domain ... POP3 サーバーへの ID
 password WatashiNoPassword ... POP3 サーバーへのパスワード
 ssl ... SSL 接続する場合に記述
-- ここまで

$ chmod 600 $HOME/.fetchmailrc ... 重要: 他人にパスワードを見られないため

keep を有効にしてちゃんと動作することがわかったら、コメント化 (#) すると共に、

$ fetchmail -vv -a

してサーバーに残してあったメールを吐き出しておこう。

cron の設定

cron で定期的にメールを外部 POP3 サーバーから取得する。

$ crontab -e

-- ここから
*/5 0-23 * * *	/usr/bin/fetchmail -s
-- ここまで

※編集したファイルを保存するには、crontab上で [ESC] → : → wq と入力して[Enter]する。(キーの同時押しなどではないので一つづつ入力する)

Postfix の設定

OS X が作成するシステムからのメールについても、IMAP 環境で読めるように設定しておく。

main.cf の修正

# vi /etc/postfix/main.cf

-- 黄色部分を追加・修正

-- 437 行目あたり(Tiger 436 行目・Panther 438 行目)の行頭の # を削除
mailbox_command = /usr/bin/procmail

Postfix の再起動

Panther の場合のみ。Tiger, Leopard の場合、postfix は StartupItems ではなく launchd にて管理されているのでこの作業は不要。スキップして次の章に進もう。

# /System/Library/StartupItems/Postfix/Postfix stop
# /System/Library/StartupItems/Postfix/Postfix start

メールクライアントの設定

IMAP サーバーを使うようにメールクライアントを設定する方法は、ここでは割愛。(IMAP メールサーバーを組みたいと思う人ならわかると思うので。もし必要だったらメールください)

関連リンク

Postfix メール送信サーバーを構築する

対象OS

Mac OS X 10.4 (Tiger)

はじめに

一般的に電子メールサービスは、加入しているインターネットプロバイダが提供するものが使われています。メール受信については、IMAP で管理するのが便利ですから、自前で IMAP サーバーを構築するメリットは高いのですが、送信については単にプロバイダが用意するメール送信サーバーを使用するだけで事足りると思います。

ただ、プロバイダのメール送信サーバーが使えない状況もあります。たとえばそのプロバイダが SMTP-AUTH や POP before SMTP などをサポートしていないために、自宅外からメールが送信できない場合などです。

筆者も最近プロバイダを変えて、上記の目に遭ってしまいました。でも、Mac ならば大丈夫。OS X にはすでにメール送信ソフトが入っていますから、簡単にメール送信サーバーを構築できます。

ここでは、Postfix を使って LAN 内外からメールを送信するシステムの構築を開設します。送信のための認証は SMTP-AUTH を使用します。LAN 外からのメール送信の際には SSL を使用してパスワードの漏洩を防ぐように設定します。




インストール

設定に使用する Postfix および OpenSSL はすでに Mac OS X Tiger に標準でインストールされている。そのためソフトインストールの必要はない。

設定

設定にあたって

設定の例として、マシン名などをここでは下記の通りとしている。これらは適宜ここの環境に合わせて読み替えること。

Postfix 送信メールサーバー名 server  
ドメイン local Bonjour で名前解決する際のドメイン
メール送信を受け付ける
ネットワークセグメント
192.168.0.0/24  
プロバイダが提供する
メール送信サーバー
smtp.provider.com  

X.509 証明書を用意する

個人で使うだけなので、正式な証明書を申請するのではなく、自己署名したものを作成する。

# cd /System/Library/OpenSSL/certs/
# openssl genrsa -out server.key 1024
# openssl req -new -x509 -key server.key -out server.crt
(画面に従って黄色のようにキー入力が必要)
(中略)
Country Name (2 letter code) [AU]:JP ... 住んでいる国コード
State or Province Name (full name) [Some-State]:Hyogo ... 都道府県名
Locality Name (eg, city) []:Kobe ... 市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:personal use ... 個人使用なので
Organizational Unit Name (eg, section) []: ... 個人使用なのでブランク
Common Name (eg, YOUR name) []:貴方の名前を入力
Email Address []:貴方の e-mail アドレスを入力

Postfix の設定

# cd /etc/postfix
# vi main.cf

-- 黄色のように変更する

-- 69 行目あたり 行頭の # を削除
myhostname = server.local ... メール送信サーバ名

-- 76 行目あたり 行頭の # を削除
mydomain = local

-- 91 行目あたり 行頭の # を削除
myorigin = $myhostname

-- 106 行目あたり 行頭の # を削除
inet_interfaces = all

-- 153 行目あたり 行頭の # を削除
mydestination = $myhostname, localhost.$mydomain, localhost

-- 253 行目あたり 行頭の # を削除
mynetworks = 192.168.0.0/24, 127.0.0.0/8

-- 303 行目あたり 行頭の # を削除
relayhost = smtp.provider.com

-- 436 行目あたり 行頭の # を削除
mailbox_command = /usr/bin/procmail

-- 637 行目あたり
# inet_interfaces = localhost ... コメント化

-- 655 行目あたり
# smtpd_tls_key_file = ... コメント化

-- ファイルの最後に、以下を追加する
# smtp auth
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous, noplaintext

smtpd_use_pw_server = yes
enable_server_options = yes
smtpd_pw_server_security_options = plain, login, cram-md5
broken_sasl_auth_clients = yes

smtpd_tls_cert_file = /System/Library/OpenSSL/certs/server.crt
smtpd_tls_key_file = /System/Library/OpenSSL/certs/server.key
smtpd_tls_loglevel = 1
smtpd_use_tls = yes
smtpd_tls_session_cache_database = sdbm:/etc/postfix/smtpd_scache
tls_random_source = dev:/dev/urandom
# cd /etc/postfix
# vi master.cf

-- 黄色のように変更する

-- 96 行目あたり 行頭の # を削除
tlsmgr    fifo  -       -       n       -       1       tlsmgr

下記の通りファイルを作成。

# cd /etc/postfix
# touch smtpd_scache.pag
# touch smtpd_scache.dir 

次に、Mac 起動時に Postfix を自動で起動する際のパラメータを下記のように修正する。

# cd /System/Library/LaunchDaemons
# vi org.postfix.master.plist

-- 黄色のように変更する

-- 10 行目あたりから始まる下記のブロックに下記黄色行を挿入
	<array>
		<string>master</string>
<!--
		<string>-e</string>
		<string>60</string>
-->
	</array>

-- 16 行目あたりから始まる下記のブロックに下記黄色行を挿入
	<array>
		<string>/var/spool/postfix/maildrop</string>
	</array>
	<key>OnDemand</key>
	<false/>
</dict>

以上の設定が完了したら、下記のようにMac を再起動して Postfix をリスタートする。代わりにマシンをリブートしても良い。


# launchctl stop org.postfix.master
# launchctl start org.postfix.master

2007.4.4 update:
launchctl だけでは Postfix が正しくリスタートしないのか、しばらくするとメール送信ができなくなるので Mac を再起動するように訂正。

基本設定確認

# postfix check

上記のコマンド実行にて何も表示されなければ基本の設定には問題なし。何か表示されたら、それに沿ってあらためて上記設定の通りになっているか確認しよう。(サーバー名など自分に環境に合わせる部分を適宜変更しているかもあわせて確認しよう。)

ファイアウォールの設定

Postfix サーバーとなる Mac の [システム環境設定] – [共有] を開いて、下記のポートを開けておこう。

ポート番号 プロトコル 説明
25 TCP SMTP

また、外出先などからもこのメールサーバーを使ってメールを送信する場合は、ルーターにて外部からの TCP:25 アクセスがこのサーバーに届くように port forwarding を設定しておこう。

メール中継しないようになっているか確認

メールサーバーを立てる際に気をつけなければ行けないのが、悪意ある者のメール中継をしてしまわないかということ。もしそうなっていると、SPAM の送信先を偽装するためのメール中継サーバーとして悪用されかねないためだ。上記までの設定をしていれば大丈夫なはずだが、念のために下記のように確認しよう。

項目設定

  1. www.abuse.netのサイトをブラウザで開く。
  2. A.で示した部分に今回設定したメールサーバーのグローバルIPアドレスまたは DNS で引けるサーバー名を入力する。
  3. B.で示した [Test for relay] ボタンをクリックする。


実行結果

その後、ずらずらとテスト結果が表示される。

最後に、赤枠で囲ったように “All tests performed, no relays accepted.” (全てのテストは完了しました。全ての条件でメールリレーされないようになっています。)と表示されれば、メール中継されないようになっていると判断できる。


メールクライアントの設定

きっとこのサイトを読んでいる人たちは十分わかっていると思うので、これについては割愛。(必要な人がいたら連絡ください。)

参考リンク

システム定期サービスの動作時間を変更する

対象OS

Mac OS X 10.3 (Panther)
Mac OS X 10.4 (Tiger)

はじめに

Mac OS X も含めて、UNIX 系の OS ではシステムにて一定期間ごとに実行されるサービスが存在しています。その実行間隔は下記のように分かれています。

  • 一日一回実行 (daily)
  • 週に一回実行 (weekly)
  • 月に一回実行 (monthly)

これらは主にシステムのメンテナンス目的で行われます。ここで気にしないといけないのはそれらが何時に行われるかってこと。OS X のデフォルトではこれらが未明 (3時とか 5時とか)に行われるように設定されています。そのために夜中に Mac の電源をオフにしている人の場合、これらのサービスが実行されないままになっています。

OS のメンテナンス上、それではよくありません。そこで、深夜に Mac の電源をオフにしている人は下記のように定期サービス実行時間を変更しておきましょう。

設定にあたっては、Tiger と Panther では下記のように設定方法が全く異なります。自分の OS バージョンにあわせて見てください。




Panther での変更方法

Mac OS X を含む UNIX 系 OS では、決められた日時に登録されたサービスを行うために cron (クーロン) が用意されている。Panther ではシステムが行う定期処理も cron を使って行っている。ここではそれらをシステム cron と呼ぶ。システム cron を含め、cron はユーザーがログインしてようがいまいが、コンピュータが起動していれば実行される。

以降にて、システム cron の設定時間の変更方法を解説する。

設定

crontab の編集

# vi /etc/crontab

-- 黄色部分のように修正
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#minute hour    mday    month   wday    who     command
#
#*/5    *       *       *       *       root    /usr/libexec/atrun
#
# Run daily/weekly/monthly jobs.
15      12      *       *       *       root    periodic daily
30      13      *       *       6       root    periodic weekly
30      14      1       *       *       root    periodic monthly

時間は 24 時間制で記述する。上記の例では、

  • 日々行われるサービスは毎日 12:15 に実行される。
  • 週一で行われるサービスは毎週土曜日の 13:30 に実行される。
  • 月一で行われるサービスは毎月一日の 14:30 に実行される。

例えば週一のサービスを土曜日でなく月曜日にしたい場合は、weekly の設定行の 5 番目の要素を 6 から 1 に変える。(ちなみに日曜日にしたい場合は 0 または 7 を指定する。)

Tiger での変更方法

Tiger では、これまでのシステム cron に代わり、launchd (ラウンチ・ディー) にて定期サービスが行われるようになった。具体的な変更は下記のようにする。

# cd /System/Library/LaunchDaemons
# vi com.apple.periodic-daily.plist ... 日々の定期サービスの時間変更

-- 18 行目以降を黄色部分のように変更する。
   <key>Hour</key>
   <integer>12</integer> ... 開始する時間
   <key>Minute</key>
   <integer>15</integer> ... 開始する分
-- ここまで

# vi com.apple.periodic-weekly.plist ... 週一の定期サービスの時間変更

-- 18 行目以降を黄色部分のように変更する。
   <key>Hour</key>
   <integer>13</integer> ... 開始する時間
   <key>Minute</key>
   <integer>30</integer> ... 開始する分
   <key>Weekday</key>
   <integer>6</integer> ... 開始する曜日
-- ここまで

# vi com.apple.periodic-monthly.plist ... 月一の定期サービスの時間変更

-- 18 行目以降を黄色部分のように変更する。
   <key>Hour</key>
   <integer>14</integer> ... 開始する時間
   <key>Minute</key>
   <integer>30</integer> ... 開始する分
   <key>Day</key>
   <integer>1</integer> ... 開始する日

設定が終わったら Mac を再起動することで変更完了。

時間は 24 時間制で記述する。上記の例では、

  • 日々行われるサービスは毎日 12:15 に実行される。
  • 週一で行われるサービスは毎週土曜日の 13:30 に実行される。
  • 月一で行われるサービスは毎月一日の 14:30 に実行される。

例えば週一のサービスを土曜日でなく月曜日にしたい場合は、weekly の設定行の 5 番目の要素を 6 から 1 に変える。(ちなみに日曜日にしたい場合は 0 または 7 を指定する。)

MacプリンタをWindowsから利用する

対象OS

Mac OS X 10.3 (Panther)
Mac OS X 10.4 (Tiger)

はじめに

あらかじめプリンタは Mac に接続され、Mac からちゃんとプリントができていることが前提。

Tiger ユーザーへ: (2005/9/1 update)

プリンタ登録画面

この設定を行うと、Tiger では Mac (自分自身)からそのプリンタに対してプリントできなくなる。
Mac からプリントするには、右の図のようにもうひとつプリンタを設定(同じプリンタを追加で設定)し、Mac からはそのプリンタを指定することで問題なくプリントできる。
この際、プリンタ名を変えておくとどちらが Mac 用かわかるので便利。(右の図では、ネットワーク参照用のプリンタに”for Network”を追加している)




設定

プリンタ共有

  1. [システム環境設定] – [共有] を選択する。
  2. [プリンタ共有] にチェックを入れる。

mime.convs の修正

この設定は Panther のみ必要。Tiger では必要ないのでスキップする。(ここをクリックしてスキップ)

# vi /etc/cups/mime.convs

-- 黄色のコメント部分を削除する
#application/octet-stream        application/vnd.cups-raw        0       -

mime.types の修正

この設定は Panther のみ必要。Tiger では必要ないのでスキップする。(ここをクリックしてスキップ)

# vi /etc/cups/mime.types

-- 黄色のコメント部分を削除する
#application/octet-stream

printers.conf の修正

# lpinfo -v

-- 下記のように表示される
network pap
network socket
(中略)
direct usb://EPSON/PM-910C?serial=0HELL0010212315010
	... 実際のプリンタ名は個々の環境で異なる
	... "direct usb://"にて始まる目的のプリンタを探す
(以下略)
-- ここまで

# vi /etc/cups/printers.conf

-- 黄色の部分を修正(先に表示したデータをカット&ペーストする)
DeviceURI file:///dev/null
  ↓	以下のようにする
DeviceURI usb://EPSON/PM-910C?serial=0HELL0010212315010

もし lpinfo でプリンタ情報が表示されない場合、ちゃんと [プリンタ共有] を有効にしているか確認すること。

CUPS の再起動

Panther の場合:
ここまでできたら、再度 [システム環境設定] 内の [共有] にて [プリンタ共有] を一度停止し、もう一度開始する。

Tiger の場合:

# ps ax |grep cupsd

-- 下記のように画面に表示される (数字等は環境によって変化する)
174 ?? Ss	0:00.90 /usr/sbin/cupsd -f ... この行の先頭の番号 (黄色部分を覚えておく
748 p1 R+	0:00.00 grep cupsd
-- ここまで

kill -HUP 174 ... 先ほど覚えておいた数字を指定する (この場合は 174)

Windows 側の設定

これで Mac 側の設定は完了。次に Windows 側の設定を行う。

ここで使用したのは Windows XP Home Edition。

  1. ウェブブラウザ (Firefox や Internet Explorer) を起動して、http://mypc.mydomain:631 と入力する。(赤字部分はプリンタのつながった Mac の名称または IP アドレス)
  2. 表示された画面より Manage Printers をクリックする。
  3. 表示された画面よりプリンタの名前部分のリンクをクリックする。
  4. 表示された画面の URL をコピーする。
  5. [コントロールパネル] より [プリンタとFAX] を開く。
  6. ネットワークプリンタを選択し、「インターネットまたはイントラネット上のプリンタに接続」にチェックを入れて、先ほどコピーしておいた URL をペーストする。
  7. そのプリンタに適したプリンタドライバを選択する。

参考サイト

ホーム以外の共有フォルダをWindowsに公開する

対象OS

Mac OS X 10.3 (Panther)
Mac OS X 10.4 (Tiger)

はじめに

例として、ルート直下に /Music というフォルダを作成し、公開する場合の共有設定方法を挙げる。

インストール

必要なソフトは OS X にすでにインストールされているので、追加インストールは一切なし。

設定

smb.confの追加・修正

# cd /etc
# chmod o+w smb.conf ... 書込み禁止を解除 (Panther のみ必要)
# vi smb.conf

-- 最下行に下記の設定を追加する
[Music]		; Windows に表示したいフォルダ名称
   path = /Music	; 共有したいフォルダのパス
   public = yes 	; この Mac にユーザーアカウントがある者のみの
			; アクセスとしたい場合は no とする
   writable = yes	; 書込み禁止にしたいときは no とする

また、フォルダ共有と関係はないが、この通りに Mac プリンタを Windows に公開している場合、下記は必要ないのでコメントアウトしておくと良い。

# vi /etc/smb.conf

-- 黄色の通りに該当行をコメントアウトする
;[printers]
;  path = /tmp
;  printable = yes

起動

[システム環境設定] – [共有] より [サービス] のタブにある [Windows 共有] をオンにする。(すでにチェックが入っている場合はいったんオフにして、再度オンにする)

これで Windows から指定のフォルダが見えるようになる。