PostfixをPOP before SMTPで利用

Postfix トップへ戻る

2003/03/09

外部へ公開するサーバーで、しかも外部からメールの送受信を行いたいのであれば、「POP before SMTP」や「APOP before SMTP」での運用が便利かと思います。

Vine3.2の場合、Vine3.2でPOP Before SMTPのほうがいいと思います。

このページでは、dracを使ったPOP before SMTPの設定を行います。Redhat7.3ではこの方法で設定できるようです。


portmapの起動

dracはportmapサービスを利用しますので、これが起動されるようにしておきましょう。

  1. rootになります。$ su -
  2. portmapサービスを起動します。
    # /etc/init.d/portmap start
  3. サーバー起動時にportmapが起動されるように設定します。
    # ntsysv --level 345 として、portmapにチェックを入れます。

dracのインストール

  1. http://mail.cc.umanitoba.ca/drac/ の「Obtaining the Source/compressed tar file」から"drac.tar.Z"をダウンロードします。
  2. 解凍します。
    $ mkdir drac
    $ mv drac.tar.Z drac
    $ cd drac
    $ tar zxvf drac.tar.Z
  3. Makefileを編集します(以下は変更が必要な行だけ書いてあります) 。
    INSTALL = install
    EBIN = /usr/sbin
    MAN = /usr/share/man/man
    DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C -DREQ_HASH
    CFLAGS = $(DEFS) -g
    LDLIBS = -ldb
    TSTLIBS = -L. -ldrac
    RPCGENFLAGS = -C -I
    MANADM = 8
  4. rpc.dracd.c を編集(パスを変更) 。
    #define DBFILE "/etc/postfix/dracd.db"
    #define ALFILE "/etc/postfix/dracd.allow"
  5. dracd-setup.linux を編集(POP認証の有効期限を5分にする) 。
    「start)」の「daemon rpc.dracd&」の行を
      daemon rpc.dracd -e 5&
    に変更。
  6. コンパイルとインストール
    $ make
    $ su
    # make install
    # make install-man
    # cp dracd-setup.linux /etc/rc.d/init.d/dracd
    # ln -s /etc/rc.d/init.d/dracd /etc/rc.d/rc3.d/S78dracd
    # ln -s /etc/rc.d/init.d/dracd /etc/rc.d/rc5.d/S78dracd
    # ln -s /etc/rc.d/init.d/dracd /etc/rc.d/rc6.d/K22dracd
    
  7. dracdにアクセスできるクライアントを指定
    # cp dracd.allow-sample /etc/postfix/dracd.allow
    /etc/postfix/dracd.allowを編集します。
     #255.255.255.255 192.168.16.8 ← ここをコメントにする
     255.255.255.255 127.0.0.1
    		
  8. qpopperのインストール時に必要なライブラリをインストールします。
    # cp libdrac.a /usr/lib/
  9. dracの動作テストをしてみます。
    # /etc/rc.d/init.d/dracd start
    # cd drac ←dracを解凍したフォルダ
    # ./testing localhost 12.34.56.78 ←任意のIPアドレスでOK
    # db_dump -p /etc/postfix/dracd.db
    以下のように表示されればOKです
    VERSION=3
    format=print
    type=btree
    HEADER=END
     12.34.56.78 ←testingで使用したIPアドレスと同じかを確認
     1021687559
    DATA=END

qpopperのインストール

qpopperはソースからインストールする必要があります。

  1. VineやRedhatは最初からqpopperがインストール済みなので、アン・インストールしておきます。
    $ su -
    # rpm -e qpopper
  2. http://ring.gr.jp/pub/net/mail/qpopper/からソース「qpopperX.X.X.tar.gz(X.X.Xはバージョン番号)」を取得します。これを書いている時点の最新版は4.0.4でした。
  3. ダウンロードした「qpopperX.X.X.tar.gz」を解凍します。
    $ tar zxvf qpopperX.X.X.tar.gz
  4. コンパイル&インストールします。
    $ ./configure \
    	--prefix=/usr \
    	--enable-bulletins=/var/spool/mail/bulletins \
    	--enable-specialauth \
    	--with-pam=qpopper \
    	--with-popuid=pop \
    	--enable-apop=/etc/pop.auth \
    	--enable-drac
    $ make
    $ su
    # /usr/sbin/useradd -c "Pop Account" -u 110 \
    	-s /bin/false -r -d /var/spool/mail pop
    # cp popper/popper /usr/sbin/
    # cp popper/popauth /usr/sbin/
    # mkdir /var/spool/mail/bulletins
    

Postfixの設定

Postfixは最初からインストールされているrpmパッケージを使います。

Postfixの設定は/etc/postfix/main.cf を編集して行います。他の部分はお使いのサーバにあわせて適切に設定してください。以下は最低限、必要だと思われる設定をVine初期値からの変更分で書いています。

mydomain = domain.com
myhostname = host.domain.com
mydestination = $myhostname, localhost.$mydomain $mydomain
mynetworks = 127.0.0.0/8 check_client_access hash:/etc/postfix/dracd
relay_domains = $mydestination


inetdの設定(Vine Linux等)

  1. rootになります。$ su -
  2. /etc/inetd.confを編集して、以下の行を追加します。
    pop3   stream  tcp	   nowait  root    /usr/sbin/tcpd	popper
    
  3. /etc/hosts.allowを編集して、以下の行を追加します。
    popper: ALL
    
  4. inetデーモンを再起動します。
    # /etc/init.d/inet restart

xinetdの設定(Redhat等の場合)

  1. rootになります。$ su -
  2. エディタで/etc/xinetd.d/pop3を新規作成してください。
    service pop3
    {
    	disable = no
    	socket_type = stream
    	flags = REUSE
    	protocol = tcp
    	wait = no
    	user = root
    	server = /usr/sbin/popper
    	server_args = -s -R
    }
    
  3. xinetdを再起動します。
    # /etc/rc.d/init.d/xinetd restart

pam設定

/etc/pam.d/qpopperをエディタで新規作成してください。

#%PAM-1.0
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth

ルータ設定

ルータは25番と110番ポートをサーバーにマッピングする必要があります。


不正中継のテスト

Googleで「不正中継のテスト」などで検索するとテストするサイトが調べられます。外部へ公開するサーバーでは本格運用の前に、必ず不正中継のテストを行うようにしましょう。


APOPの設定

おまけですが、APOPの使い方を書いておきます。POP3と違ってAPOPではパスワードが暗号化されるので、APOPが使えるメール・クライアントを利用するのならAPOPでの運用が良いと思います。

以下のようにしてAPOPアカウントを作成したユーザーは、POPでのメール受信が出来なくなります。POPでメール受信するユーザーはAPOPアカウントの作成をしないようします。これでPOPとAPOPの併用が出来ます。

また、POP before SMTPの設定をしていれば、APOP before SMTPという運用が出来ます。

  1. 最初にqpopperのAPOP用DBを初期化します。
  2. $ su
    # /usr/sbin/popauth -init
    「Really initialize POP authentication DB?」と表示されるので「y」を入力します。
  3. ユーザごとにAPOPアカウントを作成します。
    # /usr/sbin/popauth -user USER_NAME
    パスワードを2回聞かれるので、入力します。

参考にしたサイト

Copyright©2001-2019 釣ったよ! All Right Reserved.    sg@tsuttayo.jpn.org