|
Rumbaさんに教えていただいたMTAのTipsです。ようやく公開することが出来ました。遅れてしまって申し訳ないです。
丸々コピペになってしまいましたが説明もわかりやすいし問題ないでしょう。しかし、長いなぁ。感謝。
Postfixのインストール
gawk-3.1.0 (required)
* db-3.2.9 (required)
* libpcre-2.08 (recommended)
* postfix-20010228-pl02 (required)
とのことなので、各ソースからインストール。
====================================================================
まず、dbからインストールしてます。
http://www.sleepycat.com/
辺りから持ってきて適当なディレクトリに解凍します。
付属のドキュメントを見ると、build_unixでコンパイルらしいので
[macosx:/Users/Shared/db-4.0.14] root# cd build_unix/
../dist/configureで、コンパイル
[macosx:Shared/db-4.0.14/build_unix] root# ../dist/configure
checking build system type... powerpc-apple-darwin5.2
checking host system type... powerpc-apple-darwin5.2
〜
〜
config.status: creating db.h
config.status: creating db_config.h
問題なくコンパイル終了!で、まけまけ
[macosx:Shared/db-4.0.14/build_unix] root# make
/bin/sh ./libtool --mode=compile cc -c -I. -I../dist/../include -I../dist/../include_auto
-O ../dist/../mutex/mut_tas.c
mkdir .libs
〜
〜
creating db_verify
/bin/sh ./libtool --mode=execute true db_verify
かなり時間かかった
で、まけインストール
[macosx:Shared/db-4.0.14/build_unix] root# make install
Installing DB include files: /usr/local/BerkeleyDB.4.0/include ...
Installing DB library: /usr/local/BerkeleyDB.4.0/lib ...
〜
〜
Installing documentation: /usr/local/BerkeleyDB.4.0/docs ...
無事、インストールできたようだ。
リンクを作ります。なんで??かはよく分かりませんが、、、、Postfixで指定しているのがこのパスだからでしょうね???
[macosx:~] root# mkdir -p /usr/local/lib /usr/local/include
[macosx:~] root# ln -s /usr/local/BerkeleyDB.4.0//lib/libdb.a /usr/local/lib/libdb.a
[macosx:~] root# ln -s /usr/local/BerkeleyDB.4.0//include/*.h /usr/local/include/
====================================================================
====================================================================
次に
gawkをインストールします。
ftp://ftp.gnu.org/gnu/gawk/gawk-3.1.0.tar.gz
にあるようです。
適当なディレクトリに解凍します。
あとは、簡単いつものパターン。
[macosx:/Users/Shared/gawk-3.1.0] root# ./configure
loading cache ./config.cache
checking for a BSD compatible install... (cached) /usr/bin/install -c
〜
〜
config.h is unchanged
linking ./intl/libgettext.h to intl/libintl.h
で、"make"
[macosx:/Users/Shared/gawk-3.1.0] root# make
make 'CFLAGS=-g -O2' 'LDFLAGS=' all-recursive
〜
〜
Making all in test
make[2]: Nothing to be done for `all'.
[macosx:/Users/Shared/gawk-3.1.0] root# make install
Making install in intl
if test "gawk" = "gettext" \
〜
〜
Making install in test
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
====================================================================
====================================================================
では、Postfixのインストールに進みます.
http://www.postfix.org/ftp-sites.html
ftp://ftp.ring.gr.jp/pub/net/mail/postfix/index.html(国内ring
server)
あたりで、
Version 20010228 Patchlevel 08 Source code
を、用意します。最新リリースはpostfix-20010228-pl08なんですがこちらは、何度かチャレンジしたのですがうまく動いてくれないようです。
問題なく動くというmailinglistでの報告もありますので、もう少し確認してみます。
Postfixの使用するユーザーとグループを追加する
面倒なので、あらかじめ用意されているスクリプトを利用する。
スクリプトは、解凍したpostfixの中auxiliary/MacOSX/なのでそこに移動
[macosx:/Users/Shared] root# cd postfix-20010228-pl08/auxiliary/MacOSX/
ここのniscriptを実行!簡単です。
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# ./niscript
This script massages your netinfo database. This can severely break
your system. If your netinfo database breaks, you get to keep the parts.
No Warranty. Really.
This script tries to create two groups (if they do not already exist):
- postfix
- maildrop
and tries to create a user (if it does not already exist)
- postfix
which is member of group postfix.
Will create postfix as gid 88
Will create maildrop as gid 89
Will create postfix as uid 88
と、これでユーザーとグループが追加されました。
このスクリプトは、上記のようなユーザーID、グループIDを使いますので、
上記以外のIDを利用したい場合は、niscriptの以下
# The script starts to look at id 88 (both for user and group) and up
to 65535
# It dies if no free id is found.
my $postfixgid = undef;
my $maildropgid = undef;
my $postfixuid = undef;
を、変更すればできそうですが。。。。未確認です。
または、通常のnetinfoのコマンドでユーザーとグループを追加して下さい。
さて、MacOSXは親切(?)なことにsendmailがあらかじめ入っているのでこれを変更します。
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# chmod a-s
/usr/sbin/sendmail
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# mv /usr/sbin/sendmail
/usr/sbin/sendmail.OFF
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# mv /usr/bin/newaliases
/usr/bin/newaliases.OFF
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# mv /usr/bin/mailq
/usr/bin/mailq.OFF
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# mv /usr/bin/rmail
/usr/bin/rmail.OFF
これで、変更完了。
では、起動時にPostfixを起動できるようにStartupItemsへの登録。
こちらも、あらかじめpostfixに用意されています。StartupItemsのかけない私には有り難いことです。
なので、各ファイルをコピーします。
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# mkdir /System/Library/StartupItems/Postfix
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# cp Postfix.StartupItem/Postfix
Postfix.StartupItem/StartupParameters.plist /System/Library/StartupItems/Postfix/
(↑続けて一行で入力)
で、そのままでも問題はないのですが見た目ですぐ分かるように(標準のsendmailと間違えないように)少し修正。
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# vi /System/Library/StartupItems/Postfix/Postfix
#!/bin/sh
# Gerben Wierda, Oct 2001. Adapted from an existing example. I waive
every
# copyright on this and I also do not give any warranty.
. /etc/rc.common
##
# Start mail server
##
if [ "$1" == "start" ]
then
ーーここーーーーーーーーーーーーー
if [ "${POSTFIXMAILSERVER:=-NO-}" = "-YES-" ] ←MAILSERVERをPOSTFIXMAILSERVERと変更
then
ConsoleMessage "Starting Postfix mail services"
/usr/sbin/postfix start
fi
elif [ "$1" == "stop" ]
then
ConsoleMessage "Stopping Postfix mail services"
/usr/sbin/postfix stop
elif [ "$1" == "restart" ]
then
ーーここーーーーーーーーーーーーー
if [ "${POSTFIXMAILSERVER:=-NO-}" = "-YES-" ] ←MAILSERVERをPOSTFIXMAILSERVERと変更
then
ConsoleMessage "Reloading Postfix configuration"
/usr/sbin/postfix reload
else
ConsoleMessage "Stopping Postfix mail services"
/usr/sbin/postfix stop
fi
fi
~
~
:wq
で保存。
で、hostconfigを編集、ここに標準の MAILSERVER=-NO- というのがあるので
明示的に上でPOSTFIXMAILSERVERと変更しました。
POSTFIXMAILSERVER=-YES-の1行を追加しましょう。
[macosx:postfix-20010228-pl08/auxiliary/MacOSX] root# vi /etc/hostconfig
UW PICO(tm) 2.3 File: /etc/hostconfig Modified
##
# /etc/hostconfig
##
# This file is maintained by the system control panels
##
# Network configuration
HOSTNAME=-AUTOMATIC-
ROUTER=-AUTOMATIC-
# Services
POSTFIXMAILSERVER=-YES-
↑これを追加
これで、Postfixをインストールする準備ができました。
[macosx:/Users/Shared/postfix-20010228-pl08] root# make makefiles
CCARGS="-DHAS_DB -I/usr/local/BerkeleyDB.4.0/include" AUXLIBS="-L/usr/local/BerkeleyDB.4.0/lib
-ldb"
データベースのパスを指定していますが、dbのインストールで
[macosx:~] root# ln -s /usr/local/BerkeleyDB.4.0//lib/libdb.a /usr/local/lib/libdb.a
[macosx:~] root# ln -s /usr/local/BerkeleyDB.4.0//include/*.h /usr/local/include/
としてあるので、
CCARGS="-DHAS_DB -I/usr/local/include" AUXLIBS="-L/usr/local/lib
-ldb"
でもいいはずです。
また、pcre-2.08を使う場合は、http://www.stepwise.com/Articles/Workbench/eart.1.2.html#Package1
辺りを、参考にして下さい。
このままやると、
(set -e; echo "# DO NOT EDIT"; /bin/sh ../../makedefs &&
cat Makefile.in) >Makefile
Unknown system type: Darwin 5.2
で、アウト!
./configureだと--host=などで1.3とか1.4でいけるんでしょうが・・・・・・
で、私は"makedefs"を修正いたしました。
[macosx:/Users/Shared/postfix-20010228-pl08] root# vi makedefs
221行めRhapsody.5*|Darwin.1.*) をRhapsody.5*|Darwin.5.*)に変えました。
で、もう一度。
[macosx:/Users/Shared/postfix-20010228-pl08] root# make makefiles
CCARGS="-DHAS_DB -I/usr/local/BerkeleyDB.4.0/include" AUXLIBS="-L/usr/local/BerkeleyDB.4.0/lib
-ldb"
〜
〜
(set -e; echo "# DO NOT EDIT"; /bin/sh ../../makedefs &&
cat Makefile.in) >Makefile
rm -f Makefile; (set -e; /bin/sh makedefs && cat Makefile.in)
>Makefile
[macosx:/Users/Shared/postfix-20010228-pl08] root# make
set -e; for i in src/util src/global src/dns src/master src/postfix
src/smtpstone src/sendmail src/error src/pickup src/cleanup src/smtpd
src/local src/lmtp src/trivial-rewrite src/qmgr src/smtp src/bounce
src/pipe src/showq src/postalias src/postcat src/postconf src/postdrop
src/postkick src/postlock src/postlog src/postmap src/postsuper src/spa
〜
〜
結構長いかも・・・
〜
〜
cc -DHAS_DB -I/usr/local/BerkeleyDB.4.0/include -g -O -I. -I../../include
-DRHAPSODY5 -o flush flush.o ../../lib/libmaster.a ../../lib/libglobal.a
../../lib/libutil.a -L/usr/local/BerkeleyDB.4.0/lib -ldb
cp flush ../../libexec
[macosx:/Users/Shared/postfix-20010228-pl08] root# make install
ここで、いくつかPostfixが聞いてくるので全てenterでデフォルトでいきます。
質問される内容
install_root: [/]
tempdir: [/Users/Shared/postfix-20010228-pl08]
config_directory: [/etc/postfix]
daemon_directory: [/usr/libexec/postfix]
command_directory: [/usr/sbin]
queue_directory: [/var/spool/postfix]
sendmail_path: [/usr/sbin/sendmail]
newaliases_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid: [no]
manpages: [/usr/local/man]
BTW: Check your /etc/aliases file and be sure to set up aliases
for root and postmaster that direct mail to a real person, then
run /usr/bin/newaliases.
で、インストール完了です。
それでは、設定に入りましょう。
postfixは/etc/postfix/main.cfの書き換えで設定します。
何かのときに困らないようにオリジナルのファイルは残してコピーをとりましょう。
main.cfは、/etc/postfix以下にインストールされています。
[macosx:/Users/Shared/postfix-20010228-pl08] root# cp /etc/postfix/main.cf
/etc/postfix/main.cf.orig
vi、picoでもいいのですがスクロールが面倒なのでGUI環境からテキストエディターで
編集しちゃいましょう。
主な変更点は、
67行目 myhostname = host.domain.name
75行目 mydomain = domain.name
86行目 myorigin = $myhostname
96行目 inet_interfaces = all
124行目 mydestination = $myhostname, localhost.$mydomain $mydomain
168行目 mynetworks = 168.100.189.0/28, 127.0.0.0/8
280行目 alias_maps = netinfo:/aliases
291行目 alias_database = netinfo:/aliases
311行目 home_mailbox = Mailbox
辺りです。詳しくはPostfixのページhttp://www.kobitosan.net/postfix/
を、参照して下さい。
ひと通り設定ができたら,起動してテストしてみましょう。
[macosx:/Users/Shared/qpopper4.0.3] root# /usr/sbin/postfix start
postfix/postfix-script: starting the Postfix mail system
ここで、問題なくエラーなどといわれなければ一応、起動は完了ですね。
配送のテストもしてみましょう。
[macosx:/Users/Shared/postfix-20010228-pl08] root# mail -v myusername
Subject: test
test
.
これで、自分のmailboxにメールが入っていればOKですね。
適宜、/varlog/mail.log、/var/log/system/log辺りにエラー等出ていないか確認して下さい。
====================================================================
====================================================================
後は、popサーバーですね。
QUALCOMM社のFTPサイトやRing
Serverプロジェクト
などから入手できます
早速
[macosx:/Users/Shared/qpopper4.0.3] root# ./configure --enable-apop=/etc/pop.auth
--with-popuid=pop --enable-home-dir-mail=Mailbox --enable-log-login
loading cache ./config.cache
checking whether make sets ${MAKE}... yes
〜
〜
creating password/Makefile
creating config.h
configureのオプションについては適当です。ただし、Pop Before Smtpする場合は、-enable-log-login
を、つけて下さい。
[macosx:/Users/Shared/qpopper4.0.3] root# make
cd ./popper && make all
〜
〜
cc -o popauth base64.o scram.o md5.o hmac.o popauth.o \
../common/libcommon.a
で、インストールしていきます。
[macosx:/Users/Shared/qpopper4.0.3] root# cp popper/popper /usr/local/libexec/
で、コピーでインストールしました。もし /usr/local/libexec/というディレクトリができていない場合はmkdirして下さい。
で、起動させるためにinetd.confを修正
[macosx:/Users/Shared/qpopper4.0.3] root# vi /etc/inetd.conf
pop3 stream tcp nowait root /usr/libexec/tcpd
/usr/local/libexec/popper
この行の、コメントアウトをはずします。
inetdにkill -HUPしてpopperを動かします。
[macosx:/Users/Shared/qpopper4.0.3] root# ps ax | grep inetd
260 ?? Ss 0:00.00 inetd
8631 std R+ 0:00.00 grep inetd
[macosx:/Users/Shared/qpopper4.0.3] root# kill -HUP 260
====================================================================
====================================================================
pop-before-smtpで動かすためにパールのスクリプトをインストール?してみましょう。
pop-before-smtpを使わない場合はここはショートカットでいいです。
ここの
http://www.kuee.kyoto-u.ac.jp/~kitano/popauth/
watcher2 というPerlのスクリプトを入手して修正します。
あれこれ、popperログに対する変更などを必要とするようですが、何度やってもうまくできず成功した方法で紹介いたします。
popper単体のログを参照しなくてはいけないのですがpopperのログの吐き場所の指定の仕方が解らずsystem.logにpopperのログがあったのでそれを監視するように修正しました。実際に変更箇所は
1行目 → #!/usr/local/bin/perl → #!/usr/bin/perl
36行目 → $popperlog = "/var/log/popperlog"; # logfile for popper → $popperlog
= "/var/log/system.log"; # logfile for popper
38行目 → $syslogpid = "/etc/syslog.pid"; # syslog pid file → $syslogpid
= "/private/var/run/syslog.pid"; # syslog pid file
40行目 → $makemap = "/usr/etc/makemap"; # makemap command → $makemap
= "/usr/sbin/postmap"; # makemap command
230行目 → system("$makemap $mapclass ${popauth}.db < $popauth"); →
system("$makemap ${popauth} < $popauth");
です。環境により変わる事はないと思いますが一応、パスは確認するのが、良いと思います。(例:wich perlなど)
で、ファイル名をwatcher2.pl等とし/etc/mail以下に置きます。
起動スクリプトを作ります。
mkdir /System/Library/StartupItems/WATCH2 など適当なディレクトリを作ります。
この中に、StartupParameters.plist、WATCH2を入れます。
StartupParameters.plistの中身(私の場合)
----------------------------------
{
Description = "Pop Before Smtp Server";
Provides = ("WATCH2");
Preference = "None";
Messages =
{
start = "Starting PbSd";
stop = "Stopping PbSd";
};
}
----------------------------------
WATCH2の中身(私の場合)
----------------------------------
#!/bin/sh
##
# Start Pop Before Smtp Server
##
. /etc/rc.common
if [ "${WATCH2:=-NO-}" = "-YES-" ]; then
ConsoleMessage "Starting Pop Before Smtp Server"
/etc/mail/watcher2.pl &
fi
----------------------------------
/etc/hostconfigに追加
WATCH2=-YES-
これで、私の場合起動スクリプトとして動きました。良いのか悪いのかは解りません。私の環境で動いていると、いうだけです。
コピーペーストで利用していただいても結構ですが、保証はいたしません。
====================================================================
====================================================================
では、popと認証具合を起動させ、テストしてみましょう
[macosx:/Users/Shared/qpopper4.0.3] /etc/mail/watcher2.pl &
popサーバーにアクセス
[macosx:/Users/Shared/qpopper4.0.3] root# telnet 0 110
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.
+OK Qpopper (version 4.0.3) at localhost.mr-rumba.com starting. <8700.1014015951@localhost.mr-rumba.com>
user username
+OK Password required for rumba.
pass ********
+OK username has 0 visible messages (0 hidden) in 0 octets.
mv: rename /etc/mail/popauth to /etc/mail/popauth-old: No such file
or directory
postmap: warning: My hostname localhost is not a fully qualified name
- set myhostname or mydomain in /etc/postfix/main.cf
quit
+OK Pop server at localhost.mr-rumba.com signing off.
Connection closed by foreign host.
確認のため
[macosx:/Users/Shared/qpopper4.0.3] root# ls -la /etc/mail/
total 128
drwxr-xr-x 7 root wheel 194 Feb 18 16:06 .
drwxr-xr-x 72 root wheel 2404 Feb 18 11:16 ..
-r--r--r-- 1 root wheel 0 Sep 3 12:19 local-host-names
-rw-r--r-- 1 root wheel 17 Feb 18 16:06 popauth ←←←←←ログインした事により作成された
-rw-r--r-- 1 root wheel 12288 Feb 18 16:06 popauth.db ←←←←←ログインした事により作成された
-rw-r--r-- 1 root wheel 35103 Sep 3 12:19 sendmail.cf
-rwxrwxrwx 1 root wheel 6456 Feb 15 12:09 watcher2.pl
popauthに間違いなく記載されているか確認してみましょう。
[macosx:/Users/Shared/qpopper4.0.3] root# cat /etc/mail/popauth
192.168.0.200 OK
アクセスしたマシンのIPアドレスが書かれているはずです。
dbファイルはどうでしょう
[macosx:/Users/Shared/qpopper4.0.3] root# cat /etc/mail/popauth.db
<p、?!?^h?ケ??OK192.168.0.200
とりあえずIPアドレスは見えますね。
本当は、どう確認すればいいのか知らないんだけどこんなコマンドで///
[macosx:/Users/Shared/qpopper4.0.3] root# /usr/local/BerkeleyDB.4.0/bin/db_dump
-p /etc/mail/popauth.db
VERSION=3
format=print
type=hash
h_nelem=1
HEADER=END
192.168.0.200\00
OK\00
DATA=END
Pop Before Smtpで認証する場合、Postfixのmain.cfに
smtpd_recipient_restrictions = permit_mynetworks,check_client_access
hash:/etc/mail/popauth,check_relay_domains
を、追加して下さい。
aliaseの設定
/etc/postfix/aliasesに記載されている自分が必要とするidをNetInfoManagerを使い登録する。
NetInfo Managerを起動し/→aliasesと見ていくと既にいくつかが登録されているはずです。
ここに、新しいディレクトリname-root、member-myusernameこれでroot宛メール毎日のログなどが自分のアカウントmyusernameに送られてきます。
面倒な場合は、main.cfの
280行目 alias_maps = netinfo:/aliases,hash:/etc/postix/aliases
291行目 alias_database = netinfo:/aliases,hash:/etc/postix/aliases
と、した上で/etc/aliasesの下の行を編集しnewaliasesとすれば良いかもしれません。確認してないので。
# Person who should get root's mail
#root: you
postfix-1.1.3の場合
新しいバージョンはINSTALL(ドキュメント)を見ると
> 他のユーザアカウントに使われていないグループ ID を持つグループ
>"postdrop" を作成します。postfix ユーザアカウントにも使われては
>いけません。私のグループファイルエントリは次のようになっています。
> postdrop:*:54321:
>注意: このグループは古い Postfix リリースではオプションでした;
> 現在は必須となっています。
なんで???niscriptもかわってないの??とおもいつつ・・・・・・・
仕方ないので、追加しましょう。
[macosx:postfix-1.1.3/auxiliary/MacOSX] root# echo 'postdrop:*:90:'
| sudo niload group /
で、同じようにインストールすればインストールできます。
現在のところ
ターミナル上で"mail -v username@xxxx.xx.xx"
と、実行するとエラーのようにログを吐いてきます。他のPCからメールを送るとエラー吐かずに動くようです(未確認)
いずれも、メールは配信されているようですが・・・・。
|