Search




TOPページへ

このブログのフィードを取得
[フィードとは]

Powered by
Movable Type 4.23-ja

template by tokyobuddha

 ■■■■■免 責■■■■■
このサイトを参考にしたために発生した一切の損害に「てきとー管理者」は一切関知しませんし、補償もしません。 また、本サイトの記述が正しいことも保証しません。
自己責任にてお願いします。
 -------------------------

京都の鍵トラブルなら鍵レスキュー 鍵師が、家・金庫・バイク・車等の解錠を始め鍵に関する全般、また防犯設備士からみた防犯診断の上の工事等、安心しておまかせ下さい。24時間対応致します。

Postfixのインストール

客先からの依頼を受けてPostfixのインストールを行った。
今回のMTA要件としては次の通り。

POPbeforeSMTPに対応
Virtualdomainに対応

この条件を満たす一番簡単な方法をググってみた。

構成としてはこんな感じ・・・・
1.Postfix = ディストリビューションで提供されるRPMを利用
2.dovecot = ディストリビューションで提供されるRPMを利用
3.qpopper = 4.0.9
4.dtac
5.portmap

この内容で作業してみた。


■Postfix

先ずはPostfixの設定から
/etc/postfix/main.cf の編集を行う。
修正する箇所は次の通り

====================================================================
myhostname = sv.hogehoge.jp ホスト名
mydomain = hogehoge.jp ドメイン名
inet_interfaces = all すべて受信
local_recipient_maps = proxy:unix:passwd.byname $alias_maps ローカルユーザの存在をチェックし、不明なユーザは受信を拒否
mydestination = $myhostname, localhost.$mydomain, $mydomain メールの宛先として受け入れるホスト名の設定
mynetworks_style = subnet IP空間の設定
mynetworks = 127.0.0.0/8 POPbeforeSMTPに対応させるので、基本は自分のみ
smtpd_banner = $myhostname ESMTP $mail_name メールヘッダに記載されるMTAの表示の設定
relay_domains = $mydestination 信頼されない(mynetworks)のクライアント以外のメールは$mydestinationの範囲内しか配送しない。
home_mailbox = Maildir/ 各ユーザのホームディレクトリ内にMaildirをおく Maildirとは1メッセージ=1ファイルの形式にさせる。
====================================================================

設定が終わったら、postfixの再起動
# /etc/rc.d/init.d/postfix restart

参考までに25番portが開いているかを確認
# nmap localhost

が~
nmapがインストールされてないっす。

問題は無いと思うが、セオリー通りチェックしたいのでyumにてインストール
# yum install nmap

改めて確認してみる
# nmap localhost

25/tcp open smtp
↑これが出てくればOK。

次にtelnetで正常に通信できるかを確認
※内部配送確認するためテスト用のアカウントをあらかじめ作成しておく必要が有ります。
 test1
 test2

# telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 hogehoge.jp ESMTP Postfix
HELO localhost --->開始メッセージ
250 hogehoge.jp
MAIL FROM: test1@localhost --->送信者
250 Ok
RCPT TO: test2@localhost --->受信者
250 Ok
DATA --->ボディ入力
354 End data with .
Send Test.
. --->メッセージ終了
250 Ok: queued as 2852DFE005
QUIT --->抜ける

ここで実際に配送されているかを確認してみる
test2のホームディレクトリの覗くとMaildirが作成され、その中ににnewが有る
ここにメールが貯まる。
また、/var/log/maillogにもログが残っているかも確認しておこう!!


■drac
POPbeforeSMTPに対応させるためには「drac」が必要

先ず作業ディレクトリまで移動
# cd /usr/local/src
# wget ftp://ftp.cc.umanitoba.ca/src/drac.tar.Z
# mkdir drac
# cd drac
# tar xzvf ../drac.tar.Z

Makefileの修正

====================================================================
INSTALL = install
EBIN = /usr/local/sbin
MAN = /usr/local/man/man
DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C
CC = gcc
RANLIB = :
CFLAGS = $(DEFS) -g
LDLIBS = -ldb
TSTLIBS = -L. -ldrac -lnsl
RPCGENFLAGS = -C -I
MANLIB = 3
MANADM = 8
====================================================================

終わったら

# make
# make install
# make install-man
# cp libdrac.a /usr/local/lib
# cp dracd-setup.linux /etc/init.d/dracd

dracdを修正する

daemon rpc.dracd&

daemon /usr/local/sbin/rpc.dracd -i -e 15&

※-iは起動時にdatabaseを初期化。 -eは承認の有効期限を15分に設定

chkconfigにてOS起動時に自動起動させたいが、そのままでは無理!

# vi /etc/init.d/dracd

====================================================================
#!/bin/bash
#
# dracd Startup script for the dracd
#
# chkconfig: - 87 15
# description: dracd
# processname: dracd
#
# Put this file into /etc/rc.d/init.d/dracd
# and link it intot he run levels you want to use it
# by doing "ln -s /etc/rc.d/init.d/dracd /etc/rc.d/rc./S99dracd"
#
# dracd-setup
====================================================================
に書き換える必要が有るらしい

# chkconfig --add dracd
# chkconfig --level 345 dracd on

これで、自動起動OKっす

次にdracd.allowを編集
# cp dracd.allow-sample /etc/mail/dracd.allow
# emacs /etc/mail/dracd.allow
====================================================================
#255.255.255.255 192.168.16.8 #<--コメントアウトしておく
255.255.255.255 127.0.0.1
====================================================================

起動してみる
# /etc/init.d/dracd start

# ps ax | grep dracd
7004 ? S 0:00 /usr/local/sbin/rpc.dracd

こんな感じの内容が出れば動いています。

動作テストを行う
# cd /usr/local/src/drac
# ./testing localhost 1.3.5.7 ← 適当なIPを打ち込む
# strings /etc/mail/dracd.db
または # db_dump -p /etc/mail/dracd.db

VERSION=3
format=print
type=btree
HEADER=END
1.3.5.7
1072008984
DATA=END
と出ればOK。15分後にアドレスと時間が消えていればバッチリです。

drac.dbのパーミッションを設定します。
# chmod 600 /etc/mail/dracd.db

■dovecot
標準でdovecotが入っている
そのままだとpopも有効になっているので、一部修正を行う。
/etc/dovecot.confを
protocols = imap imaps → pop3 が付いていたら削除

んで、再起動
# /etc/init.d/dovecot restart

※Imap のみ使えるように dovecotを残しておく。

■qpopper
次にqpopperを設定してみる
作業ディレクトリまでおりる
#cd /usr/local/src/qpopper
# wget ftp://ftp.qualcomm.com/eudora/servers/unix/popper/qpopper4.0.9.tar.gz
# tar xvzf qpopper4.0.9.tar.gz
# cd qpopper4.0.9
# ./configure --enable-drac
# make
# make install

xinetd起動用ファイルの編集
/etc/xinetd.d/popper(qpopper)を作成して下記の内容を記述する
====================================================================
 service pop-3
 {
 disable = no
 socket_type =stream
 wait = no
 user = root
 server = /usr/sbin/popper
 server_args = -s
 }
====================================================================
んで、xinetdを再起動
# /etc/rc.d/init.d/xinetd restart

念のため /etc/hosts.allowにpopper : ALLを記述。

動作テストを行ってみる
# telnet localhost pop3
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Qpopper (version 4.0.9) at pacific starting.
と出ればOK。
quitで抜けます。


この状態でメールクライアントにアカウントを設定して送受信テストを行う。
test1からtest2に送ってみる。
正常に送信確認できた。
次に受信。
test1からtest1(自分から自分に)へ送ってみる。
送信はOK

ん?
受信が出来ないっす。
サーバ内部にはメールは有る
しかし、何度やっても受信できない。
各種Logを確認しても問題ない。
でも、受信だけが出来ない。

多分qpopperの問題だと思うので、ググってみる。

発見! qpopperは標準ではMaildir方式に対応していないらしい。
パッチを当てることでMaildirに対応するらしい。
しかし、簡単に済ませたいのでpostfix側を修正して対応する。
変更はmain.cfを変更
mail_spool_directory = Maildir/

mail_spool_directory = /var/spool/mail

postfixを再起動して、改めてtest1からtest1(自分から自分に)へ送ってみる。
送信はOK
/var/spool/mailにtest1が作成されている

次に受信
OK。

■バーチャルドメイン対応
バーチャルに対応させるためには、Postfixの編集とPortmapの起動が必要。
Portmapは既存の環境でインストール済みだったので、serviceを起動するのみ。
# /etc/rc.d/init.d/portmap start

postfixを編集する

/etc/postfix/main.cf に一行足す。
====================================================================
virtual_alias_maps = hash:/etc/postfix/virtual
====================================================================

/etc/postfix/virtual の編集
hogehoge.com anything
hogehoge.com anything

コレで対応OKっす。

あとは、ユーザー作ってマッピングさせればOKかな?


自分のサーバではMaildir方式に対応させたいっすね~
※qpopper4.0.9の場合、qpopper-mysql-0.15-test.patchが必要らしい。

投稿時間: 23:38