月別アーカイブ: 2008年1月

MacPortsを利用する

対象OS

Mac OS X 10.3 (Panther)
Mac OS X 10.4 (Tiger, PPC/Intel Mac 両機種での対応を確認)
Mac OS X 10.5 (Leopard)

はじめに

Mac OS のコア部分には Darwin が使われている。これはいわずと知れた UNIX をベースにしたシステム。そのため UNIX の豊富なソフトウェア資産が使えるが、一口に UNIX といってもそれぞれのプラットフォームごとに細かな違いがある。そのため、ほとんどの場合、それら UNIX ソフトウェアを Mac にて使用するには修正が必要になる。(別にこれは Mac に限ったことではないけれども。)このように個々のプラットフォームにソフトウェアを修正することを「ポーティング」と言う。Mac にもいくつかのポーティングプロジェクトが存在する。ここでは、Mac の代表的なポーティングプロジェクトである MacPorts (従来名: Darwinports) のインストール・利用方法を紹介する。

インストール

Xcode のインストール

まず Xcode をインストールしておく。インストール方法は下記のリンクを参照のこと。

port のインストール

port のダウンロード

※”port” とは、MacPorts を利用する際に使用するコマンドのこと。

downloadをクリック

  1. 下記リンクをクリックして、MacPorts のサイトに行く。
  2. すると左のサイトが表示されるので、赤枠で囲った Download をクリックする。


tar.bz2をクリック

  1. 赤で囲んだ部分をクリックして MacPorts のソースをダウンロードする。
  2. ダウンロードの後、自動的に解凍される。(ブラウザの設定によっては自動解凍されない。その場合はダブルクリックで解凍しておく)





port のコンパイル

先ほどダウンロードしたアーカイブファイルを使って、下記の手順でコンパイルを行う。

# cd ~/Downloads/MacPorts-1.6.0
	... ファイルの場所やファイル名は適宜自分の環境に合わせて
# ./configure
# make
# make install

port への path 設定

# vi /etc/bashrc

-- 下記の内容を bashrc 内に記述する
PATH=${PATH}:/opt/local/bin ... すでに PATH が定義されている場合、この行はその定義よりも下に書く

man path 設定

これは OS X 10.4 以前では必要ないのでその場合はここをクリックしてスキップ。

# vi /etc/manpaths

-- 下記の内容をファイルの一番下などに記述する
/opt/local/man ... すでに記述してある場合は不要

使い方


ポートリストのアップデート

MacPorts にて利用できるアプリケーションリストを最新にするには下記のコマンドを入れる。

# port -d selfupdate

パッケージのサーチ

あるアプリケーションパッケージが MacPorts に用意されているかを調べるには下記のようにする。

$ port search [パッケージ名]

パッケージをインストールする

アプリケーションパッケージをインストールするには、下記のようにする。

# port install [パッケージ名]

X.509証明書を作成する

対象OS

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




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 アドレスを入力

作成できたら、下記のようにパーミッションを変更しておく。

# cd /System/Library/OpenSSL/certs/
# chmod 600 server.key
# chmod 600 server.crt

IMAPメールサーバーにSSLで接続できるようにする

対象OS

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

はじめに

IMAP4 は複数の PC にてメールを一元的に使えて便利です。そうなると自宅外からもアクセスしたくなりますが、その場合に問題となってくるのがセキュリティです。IMAP4 も POP3 同様にアクセス時は ID もパスワードも平文にて送られますので盗聴される危険があります。そこで、外部からのアクセスには SSL を使用できるように設定します。

設定にあたっては、先にあった IMAP4 を使ったメールサーバーを構築するの通りにメール環境が構築されていることを前提とします。




インストール

ここで必要なものは OpenSSL, Binc IMAP の 2 つ。OpenSSL は OS に標準でインストールされているので特に用意する必要なし。Binc IMAP は先の設定でインストールされている。そのため、新たにインストールするものはない。

設定

X.509 証明書を用意する

下記のリンクに従って、X.509 証明書を作成する。

その後、下記のように Binc IMAP 用のファイルを作成する。

# cd /System/Library/OpenSSL/certs/

# cat server.key server.crt > /opt/local/etc/bincimap/bincimap.pem
# chmod 0400 /opt/local/etc/bincimap/bincimap.pem

Binc IMAPの設定

特になし。

IMAP SSLデーモンの自動起動設定

Leopard の場合

# cd /Library/LaunchDaemons
# vi imaps.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>imaps</string>
        <key>Nice</key>
        <integer>-7</integer>
        <key>ProgramArguments</key>
        <array>
                <string>/opt/local/bin/bincimap-up</string>
                <string>--ssl</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 SSL</string>
        <key>Sockets</key>
        <dict>
                <key>imaps993</key>
                <dict>
                        <key>SockServiceName</key>
                        <string>imaps</string>
                </dict>
        </dict>
        <key>inetdCompatibility</key>
        <dict>
                <key>Wait</key>
                <false/>
        </dict>
</dict>
</plist>

設定が終わったら下記のようにして Binc IMAP を起動する。または Mac を再起動しても良い。

# launchctl load /Library/LaunchDaemons/imaps.plist

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

Tiger 以前の場合

# cp /opt/local/etc/bincimap/xinetd/imaps.sample /etc/xinetd.d/imaps

設定が終わったら下記のようにして Binc IMAP を起動する。または Mac を再起動しても良い。

# kill -HUP `cat /var/run/xinetd.pid`

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

Apple Mail の場合

わかると思うのでここでは割愛。必要な人はメールをください。

Microsoft Outlook 2002 の場合

  1. メニューバーより、[ツール] – [メールアカウント] を選択。
  2. 「すでに存在するアカウントの表示/修正」を選択して [次へ] ボタンを押す。
  3. IMAP SSLにてアクセスしたいアカウントを選択して、[変更] ボタンを押す。
  4. [More Settings …] を押す。
  5. 表示されるウィンドウにて、[Advanced] タブを選択する。
  6. 表示されるウィンドウにて、「This server requires an SSL-secured connection (SSL)」にチェックを入れる。
    すると、その上の使用ポート番号が 993 に変わる。

設定を保存し、これまでのように受信箱にアクセスする。

この場合、証明書は自己署名なので、毎回サーバーへの接続時に下記のように警告が表示されるが [はい] を押すことでちゃんと接続できる。

セキュリティ証明書の警告

警告がうっとおしいので、LAN 内からのアクセスの場合は通常の IMAP で、外部からのアクセスのみ IMAP SSL を使うとよい。

迷惑メールをフィルタリングする

対象OS

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

はじめに

Mac OS Xのメールクライアント Mail はよく出来たメーラーで、自身で迷惑メール (SPAM) のフィルタリングができる。けれど、IMAP4 を使って複数のメールクライアントで参照するとなると、メール受信時に迷惑メールをふるいわける必要があるしその方が便利。(それぞれのメールクライアントでフィルタ設定をしてられないから。)ここでは、spamprobe を使った迷惑メールのふるいわけについて説明する。

設定に当たっては、IMAP4 を使ったメールサーバーを構築するの通りにメール環境が構築されていることを前提としている。

使用ソフト

  • spamprobe 1.2a

spamprobe 入手とインストール

インストールの前に

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

インストール

# port -d selfupdate
# port install spamprobe




設定

spamprobe 内部データベースフォルダの作成

$ cd $HOME
$ mkdir .spamprobe ... spamprobe 用データベース

迷惑メール振り分けフォルダの作成

フォルダ作成にはメールクライアントを使用する。ここでは、Apple Mail v1.3.9 を使って作成。

歯車ボタンを押す

  1. メールボックスが表示されていなかったら、1.に示したボタンを押して表示する。
  2. 歯車のボタンを押す。


[新規]を選択

  1. [新規] を選択する。


フォルダを作成

  1. [場所] が [この Mac 内] になっていることを確認する。
  2. [名前] に作成するフォルダ名を入れる。
    以下の 3 つのフォルダを作成する。
    • Spam
    • NoSpam
    • Trash


それと、Apple Mail の迷惑メール機能は必要ないのでオフにしておくと良い。

.procmailrc の編集

$ cd $HOME
$ vi .procmailrc

-- ここから (黄色が追加部分)
PATH=/usr/bin:/usr/local/bin:/opt/local/bin
LOCKFILE=$HOME/.lockmail
MAILDIR=$HOME/Library/Maildir
DEFAULT=INBOX/new
#LOGFILE=$HOME/procmail.log ... ちゃんと動かないときはここを有効にしてログを調べよう

:0
SCORE=| /opt/local/bin/spamprobe receive
:0 wf
| formail -I "X-SpamProbe: $SCORE"
:0 a:
*^X-SpamProbe: SPAM
Trash/new
-- ここまで

学習用スクリプトを設定

$ mkdir $HOME/bin ... まだ作っていない場合
$ vi $HOME/bin/spamproberc.sh ... 以下のファイルを作成する

-- ここから
#!/bin/bash

BIN=/opt/local/bin
IMAPDIR=$HOME/Library/Maildir

cd $IMAPDIR/NoSpam/cur/
for file in *
do
if [ -f $file ] ; then
        $BIN/spamprobe good $file
        mv $file $IMAPDIR/INBOX/cur/.
fi
done

cd $IMAPDIR/Spam/cur/
for file in *
do
if [ -f $file ] ; then
        $BIN/spamprobe spam $file
        mv $file $IMAPDIR/Trash/cur/.
fi
done

$BIN/spamprobe cleanup 2 14
-- ここまで

$ chmod 755 $HOME/bin/spamproberc.sh ... 実行可能にしておく

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

学習機能の設定

cronで定期的に迷惑メールの学習とデータベースのメンテナンスを行う。

$ crontab -e
00 12 * * *	$HOME/bin/spamproberc.sh 2> /dev/null

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

使い方

上記により、送られてくるすべてのメールは一旦 spamprobe が内容を確認し、迷惑メールと判断されたら Trash へ、そうでなければ通常通り受信箱へ送られるようになる。でも、間違って判定してしまうことがあるので、その時は下記に従って spamprobe に学習させてあげる必要がある。(特に導入してすぐは学習が足りないので普通のメールでも迷惑メールと判定されることが多い。100 通くらいの迷惑メールを学習させるとかなり精度が良くなる)

必要なメールが間違って迷惑メールと判定された場合

NoSpamをチェック

  1. メーラーよりTrashのフォルダを開いて、必要なメールが混入していないか確認する。
  2. もし必要なメールが入っていたら、NoSpam に移動する。
  3. 最大一日待つと、学習され、メールは自動的に受信箱に戻される。


最初のうちは spamprobe の学習が足りずに、正しいメールでも Trash へ送られる可能性がある。なので、最初はまめに Trash を確認して正しいメールが入れられてないかチェックすること。

迷惑メールなのに受信箱に入れられたメールの場合

NoSpamをチェック

  1. 受信箱から迷惑メールを Spam に移動する。
  2. 最大一日待つと、移動した迷惑メールが学習され、その後自動的に Trash に移される。


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 メールサーバーを組みたいと思う人ならわかると思うので。もし必要だったらメールください)

関連リンク