Solaris

2006/1/27 11:24 AM 更新

Postfix

自宅から外部へメールを送信するのとkajukaju.netドメイン宛のメールを受信するためにSMTPサーバを導入する。
KAJUKAJU.netが接続しているISPではOutbound 25 blockが導入されているため外部へのメール送信は全てISPのSMTPサーバ経由で配送させる。

Solaris9は標準でsendmailがインストールされているのでPostfixをインストールする前にアンインストールしておく。
アンインストールはSUNWsndmrとSUNWsndmuパッケージを削除すればよい。

# pkginfo | grep SUNWsnd
system SUNWsndmr Sendmail root
system SUNWsndmu Sendmail user

# pkgrm SUNWsndmr SUNWsndmu

Postfixを起動する専用ユーザを作成する。

# groupadd -g 10051 postfix
# groupadd -g 10052 postdrop
# useradd -u 10051 -g 10051 -d /var/spool/postfix -s /bin/false postfix

Postfixの公式サイトより最新のソースファイルを入手しインストールする。

$ wget ftp://postfix.get7.biz/postfix/official/postfix-2.1.3.tar.gz
$ tar xvzf postfix-2.1.3.tar.gz
$ cd postfix-2.1.3
$ make makefiles CC=gcc CCARGS='-DDEF_CONFIG_DIR=\"/var/postfix/etc\"'
# make install

Postfixの設定ファイルを編集。
  /var/postfix/etc/main.cf

myhostname = postman.kajukaju.net
mydomain = kajukaju.net
myorigin = $myhostname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks_style = subnet
alias_maps = dbm:/etc/aliases
alias_database = dbm:/etc/aliases
home_mailbox = Mailbox
sample_directory = no

バウンスメール受信用、内部エラー発生時受信用の管理者アカウントを作成する。
実際にはこれら管理者アカウント宛のメールは実メールに転送する。
  /etc/aliaces

# Local mail relay config file
MAILER-DAEMON: postmaster
postmaster: root
postfix: root

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

Aliasを有効にする。

# newaliases

起動スクリプトを作成する。
  /etc/init.d/postfix

#!/sbin/sh
# postfix script

case "$1" in
'start')
if [ -f /var/postfix/sbin/postfix ]; then
/var/postfix/sbin/postfix start
fi
;;

'stop')
/var/postfix/sbin/postfix stop
;;

'reload')
/var/postfix/sbin/postfix reload
;;

'abort')
/var/postfix/sbin/postfix abort
;;

'flush')
/var/postfix/sbin/postfix flush
;;

*)
echo "Usage: $0 {start|stop|reload|abort|flush}"
exit 1
;;

esac
exit 0

ランレベル2のときにPostfixが起動するようにシンボリックリンクをはる。

# chmod 744 /etc/init.d/postfix
# ln -s /etc/init.d/postfix /etc/rc2.d/S88postfix
# ln -s /etc/init.d/postfix /etc/rc0.d/K36postfix

Postfixを起動する。

# /var/postfix/sbin/postfix start
postfix/postfix-script: starting the Postfix mail system

# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 22071 1 0 15:05:03 ? 0:00 /var/postfix/bin/master
postfix 22072 22071 0 15:05:03 ? 0:00 pickup -l -t fifo -u
postfix 22073 22071 0 15:05:03 ? 0:00 qmgr -l -t fifo -u

動作確認をする。

# telnet postman.kajukaju.net 25
Trying 192.168.1.cc...
Connected to postman.kajukaju.net.
Escape character is '^]'.

220 postman.kajukaju.net ESMTP Postfix
HELO localhost
250 postman.kajukaju.net
MAIL FROM:
250 Ok
RCPT TO:
250 Ok
DATA
354 End data with .
Subject:Test mail
This mail is test mail.
.
250 Ok: queued as 9DE1560C24
QUIT
221 Bye
Connection closed by foreign host.

メールが受信できていることを確認する。
  /var/mail/user

From root@kajukaju.net Sat Jun 26 15:20:38 2004
Return-Path:
X-Original-To: user@kajukaju.net
Delivered-To: user@kajukaju.net
Received: from localhost (client.kajukaju.net [192.168.1.xx])
by mail.kajukaju.net (Postfix) with SMTP id 531822BB
for ; Sat, 26 Jun 2004 15:19:59 +0900 (JST)
Subject:Test
Message-Id: <20040626061959.531822BB@postman.kajukaju.net>
Date: Sat, 26 Jun 2004 15:19:59 +0900 (JST)
From: root@kajukaju.net
To: undisclosed-recipients:;

This mail is test mail.

サーバ稼働時のログ。

# tail /var/log/maillog
Jun 26 15:19:42 barbara postfix/smtpd[22130]: [ID 197553 mail.info] connect from client.kajukaju.net[192.168.1.xx]
Jun 26 15:20:18 barbara postfix/smtpd[22130]: [ID 197553 mail.info] 531822BB: client=client.kajukaju.net[192.168.1.xx]
Jun 26 15:20:38 barbara postfix/cleanup[22133]: [ID 197553 mail.info] 531822BB:message-id=<20040626061959.531822BB@postman.kajukaju.net>
Jun 26 15:20:38 barbara postfix/qmgr[22127]: [ID 197553 mail.info] 531822BB: from=, size=389, nrcpt=1 (queue active)
Jun 26 15:20:38 barbara postfix/local[22134]: [ID 197553 mail.info] 531822BB: to=, relay=local, delay=39, status=sent (delivered to maildir)
Jun 26 15:20:38 barbara postfix/qmgr[22127]: [ID 197553 mail.info] 531822BB: removed
Jun 26 15:20:41 barbara postfix/smtpd[22130]: [ID 197553 mail.info] disconnect from client.kajukaju.net[192.168.1.xx]