このページではLinux構築した自宅サーバーで、メールサーバーPop-before-smtpPOP before SMTPとして運用する方法について解説します。
お便利サーバー.com+相互リンクサイト内をキーワードで検索
メールサーバーの構築

メールサーバーについて

電子メールシステムについて

メールアカウントの作成

POP/IMAPサーバーの設定

Sendmailの設定

Postfixの設定

ユーザー認証によるメール送信

SMTP AUTHの設定

POP/IMAP before SMTP

dracによるPBS構築
(WBEL3,CentOS3(i386))

Pop-before-smtpの設定
(WBEL3,4_CentOS3,4+UW IMAP)

Pop-before-smtpの設定
(WBEL4_CentOS4,5+Dovecot)

SquirrelMailの設定

サブミッションポートの設定

メールの転送設定のコツ

メールサーバーのコントロール

メールサーバーの動作チェック

ポートフォワーディングの設定


汎用性重視なら"Pop-before-smtp+UW IMAP"でPBS

drac POP/IMAP before SMTP を構成するうえでは最も扱いやすく、動作の確実な アプリケーション ですが、もう長くバージョンアップされておらず、最新の LinuxOS やその上で動作する メールサーバー アプリケーション上ではそのまま利用できなくなってきています。

残念なことに例外に漏れず x86_64 WBEL3 及び CentOS3 、WBEL4及びCentOS4の環境ではdracをそのまま利用することはできません。

もちろんdracの ソース は公開されていますから、これを動作環境に合わせて書き換え、 コンパイル して利用することは可能です。

しかしLinuxOSの初心者が難解なソースコードを書き換えることなど思いもよらないことですから、できれば初心者レベルでも理解可能な手順で構成できる方法をとりたいところです。

そこでこういったケースでは、dracに比べるとやや手間はかかりますが比較的応用範囲の広いPOP/IMAP before SMTPサポートアプリケーションである、 Pop-before-smtp を利用します。

Pop-before-smtpは Perl で記述された スクリプト ですから、動作については ディストリビューション アーキテクチャ に依存しません。

Pop-before-smtpは MRA がメールの受信要求の際に記録する ログ ファイルの情報を読み取り、パスワード認証によってメールの受信に成功したログデータを探し出してその要求元の IPアドレス データベース に一定時間登録します。

メール受信の要求元が メールサーバー とは別の サブネット の場合、Pop-before-smtpはそのサブネットの外側(通常は WAN 側)の ゲートウェイアドレス を要求元のIPアドレスとして登録します。

つまり、 NAT + IPマスカレード 環境下にある外部のサブネットからでも、結果として同じように動作するようになります。

通常、 MUA から SMTP によるメールの送信要求を受けた MTA は、 Sendmail の場合は "/etc/mail/access.db" sendmailの/etc/mail/accessの設定 のみを、 Postfix の場合は "/etc/postfix/main.cf" "mynetworks_style" (または"mynetworks") ディレクティブ のパラメータ postfixのmynetworks_styleディレクティブの設定 のみを参照して、転送を伴うメールの送信要求を受け付けます。

Pop-before-smtpを用いる場合は、これに加えてSendmailやPostfixに対して、

「ついでにPop-before-smtpの作成したデータベースを参照して、そこに登録されているIPアドレスからの送信も転送許可で受け付けなさい。」

という設定を行っておきます。

これで「任意の ノード (つまり外出先)からの自由なメールの送信。」が可能になる、というわけです。

Pop-before-smtpはdracに比べるとインストールがやや面倒ですが、手順が多いだけで方法そのものは決して難しいものではありません。

また、WBEL4やCentOS4が標準で利用するMRAは Dovecot ですので、できればそのままこのMRAを利用したいところです。

ところがDovecotは積極的な開発が続いている新しいプログラムということもあって、Pop-before-smtpが参照するログファイルの書式が、そのバージョンや添付先の ディストリビューション によってまちまちです。

従ってDovecotでPop-before-smtpを利用する場合、Dovecotのバージョンアップの内容によっては設定を変更しなければならなくなる可能性があり、適切な設定に固定し難いという問題があります。

そこでこの コンテンツ では、敢えてDovecotは使用せず、WBEL3やCentOS3と同じMRAである UW IMAP インストール して利用します。

もちろん、Pop-before-smtpを使ったPOP/IMAP before SMTPはWBEL3やCentOS3でも構築できます。

ただし以下の説明はWBEL4及びCentOS4での利用を前提にしていますので、WBEL3やCentOS3でPop-before-smtpを利用される方は相違点を適宜読み替えて参考にしてください。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

Pop-before-smtpについて〜入手方法など

Pop-before-smtpは、 ソース プログラムを、

から ダウンロード し、手動で インストール しても構いませんが、実は都合の良いことに最初から UW IMAP に最適化された RPM

pop-before-smtp-1.33-1.noarch.rpm

が公開され、入手することができますから、今回はこれを使用します。

上の公式ページからは比較的新しいバージョンのpop-before-smtpのソースプログラムしかダウンロードできなくなってますから、インターネット上を検索して適当なダウンロードサイトサイトを見つけてダウンロードします。

例えば、 国立大学法人 北陸先端科学技術大学院大学 アノニマスFTP サーバーの

からダウンロードすることができますから、 クライアント機 上から、

をクリックしてダウンロードし、 FTPクライアント を使って 構築中のLinuxサーバー アップロード すればOKです。

または、 SSHクライアント 構築中のLinuxサーバー にログインし、 wget コマンド で直接 構築中のLinuxサーバー にダウンロードする方法もあります。

[tanaka@web1 ~]$ wget ftp://ftp.jaist.ac.jp/pub/sourceforge/p/project/po/popbsmtp/OldFiles/
popbsmtp/pop-before-smtp-1.33-1.noarch.rpm
Enter
--00:38:13-- ftp://ftp.jaist.ac.jp/pub/sourceforge/p/project/po/popbsmtp/OldFiles/pop-before-smtp-1.33-1.noarch.rpm
      => `pop-before-smtp-1.33-1.noarch.rpm'
ftp.jaist.ac.jp をDNSに問いあわせています... 150.65.7.130
ftp.jaist.ac.jp|150.65.7.130|:21 に接続しています... 接続しました。
anonymous としてログインしています... ログインしました!
==> SYST ... 完了しました。  ==> PWD ... 完了しました。
==> TYPE I ... 完了しました。 ==> CWD /pub/sourceforge/p/project/pop ... 完了しました。
==> PASV ... 完了しました。  ==> RETR pop-before-smtp-1.33-1.noarch.rpm ... 完了しました。
長さ: 35,997 (35K) (確証はありません)

100%[====================================>] 35,997    --.--K/s  ETA 00:00

00:38:14 (259.54 KB/s) - `pop-before-smtp-1.33-1.noarch.rpm' を保存しました [35997]

[tanaka@web1 ~]$

現在のところ(2008年3月)、WBELやCentOSにはPop-befor-smtpは標準添付されていませんので、 yum でシステム全体を アップデート しても yumによるシステムのアップデート(WBEL3) yumによるシステムのアップデート(CentOS3) yumによるシステムのアップデート(WBEL4) yumによるシステムのアップデート(CentOS4) 、一緒に再アップデートされることはありません。

ただ、後々標準添付される可能性がないともいえませんから、自動アップデートの対象からはずしておくと良いでしょう。

nanoエディタ "/etc/yum.conf" を開き nanoエディタでファイルを開く [main]セクション以下に "exclude=pop-before-smtp*" と記述してください。

右の例では割愛していますが、既に他のrpmについて同じようにあなた自身が記述しているかもしれません。
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=whitebox-release

   中略

exclude=pop-before-smtp*

   後略

これで、yumによるpop-before-smtpのアップデートが行われる可能性はなくなりました。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

MRAの"Dovecot"→"UW IMAP"への入れ替え(WBEL4,CentOS4)

もしも WBEL3 CentOS3 をお使いの場合は、既に標準の MRA として UW IMAP インストール されているはずですので特別に何かする必要はありません。まだ起動設定が済んでいない場合は UW IMAPの設定(WBEL3,CentOS3) に従って設定を行ってください。

WBEL4及びCentOS4をお使いの方はMRAとして Dovecot がインストールされているはずですので、既に Dovecotの設定(WBEL4,CentOS4) デーモン を起動している場合はまずこれを停止してください。

[root@web1 ~]# /etc/init.d/dovecot stopEnter
Dovecot Imap を停止中:                  [ OK ]
[root@web1 ~]#

またDovecotのデーモンを サーバー の起動時に自動的に起動するように設定している場合は、 ntsysv コマンド で設定画面を開き、 dovecot デーモン のチェックをはずしておいてください。

dovecotをntsysvで自動起動登録を解除する
"dovecot"を"ntsysv"で自動起動登録を解除する

次に、UW IMAPをインストールしますが、WBEL4及びCentOS4には標準ではUW IMAPは添付されていませんので、WBEL3及びCentOS3のパッケージを流用します。

WBEL3及びCentOS3用のUW IMAPは「独立行政法人・理化学研究所」の HTTP サイト

からダウンロードすることができますから、 クライアント機 上から Webブラウザ で接続して最新のUW IMAPをダウンロードします。

まず、現在ご利用のOSの種類に応じて以下の URL のいずれかに接続します。

WBEL4(i386)をご利用の場合:

http://ftp.riken.go.jp/Linux/whitebox/3.0/en/updates/i386/

WBEL4(x86_64)をご利用の場合:

http://ftp.riken.go.jp/Linux/whitebox/3.0/en/updates/x86_64/

CentOS4(i386)をご利用の場合:

http://ftp.riken.go.jp/Linux/centos/3.9/os/i386/RedHat/RPMS/

CentOS4(x86_64)をご利用の場合:

http://ftp.riken.go.jp/Linux/centos/3.9/os/x86_64/RedHat/RPMS/

接続したら、パッケージの一覧中から、 "imap-200〜" を探し、クリックしてダウンロードし、 FTPクライアント を使って 構築中のLinuxサーバー アップロード すればOKです。

または、 SSHクライアント 構築中のLinuxサーバー にログインし、 wget コマンド で直接 構築中のLinuxサーバー にダウンロードする方法もあります。

wgetによるダウンロードは一般 アカウント でも可能ですから、一旦 "exit" "tanaka" に戻って作業しています。
もちろん、安全のためです。
また、右はCentOS4の実施例です。
[tanaka@web1 ~]$ wget http://ftp.riken.go.jp/Linux/centos/
3.9/os/i386/RedHat/RPMS/imap-2002d-14.i386.rpm
Enter
--00:27:17-- http://ftp.riken.go.jp/Linux/centos/3.9/os/i386/RedHat/RPMS/imap-2002d-14.i386.rpm
ftp.riken.go.jp をDNSに問いあわせています... 134.160.38.1
ftp.riken.go.jp|134.160.38.1|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 1285765 (1.2M) [text/plain]
Saving to: `imap-2002d-14.i386.rpm'

100%[====================================>] 1,285,765  467.86K/s

00:27:21 (466.57 KB/s) - `imap-2002d-14.i386.rpm' を保存しました [1285765]

[tanaka@web1 ~]$

引き続き、 ユーザーアカウント "root" に変更し、 ダウンロード した "imap-2002d-14.i386.rpm" をインストールします。

先に "tanaka" ホームディレクトリ からwgetによるダウンロードをおこないましたので、ダウンロードしたプログラムは同じく "/home/tanaka/" 以下に保存されています。
[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# rpm -ivh /home/tanaka/imap-2002d-12.i386.rpmEnter
Preparing...        ########################################### [100%]
  1:imap          ########################################### [100%]
[root@web1 ~]#

これでインストールは終わりですが、ここで「UW_IMAPの起動設定」 POP/IMAPサーバーの設定について を参考に、必要なPOP/IMAPデーモンがきちんと起動するように設定を行ってください。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

Pop-before-smtpのセットアップ

以下、 Pop-before-smtp インストール と設定、動作確認について説明します。

Pop-before-smtpのインストール

まず、先にこのパートで ダウンロード した "pop-before-smtp-1.33-1.noarch.rpm" rpm コマンド インストール します。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# rpm -ivh /home/tanaka/pop-before-smtp-1.33-1.noarch.rpmEnter
Preparing...        ########################################### [100%]
  1:pop-before-smtp    ########################################### [100%]
[root@web1 ~]#

インストールが終わったら、とりあえずpop-before-smtpを起動してみてください。大抵は以下のように盛大にエラーが表示されます。

[root@web1 ~]# /etc/init.d/pop-before-smtp startEnter
Starting pop-before-smtp: Can't locate File/Tail.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8....
   中略
BEGIN failed--compilation aborted at /usr/sbin/pop-before-smtp line 13.
                             [失敗]
[root@web1 ~]#

もちろん、起動には失敗します。

原因はエラーメッセージを読むと解りますが、

「(pop-before-smtpの実行に必要な)File/Tail.pmが何処にも見当たらない。」

というわけです。

Pop-before-smtpの実体は Perl スクリプト なのですが、Perlスクリプトの多くは基本的なPerl インタープリタ だけでは動作せず、様々なPerlの モジュール を利用するのが普通です。

WBEL CentOS には一般的に利用されることの多いPerlモジュールは最初からインストールされていますが、Pop-before-smtpの実行にはそれだけでは足りないというわけです。

File//Tail.pmを始め、Perlのライブラリの多くは、 "CPAN" という Perl のライブラリ サーバー から、使用中のバージョンのPerlに対応するものを簡単にインストールすることができますから、これを利用してインストールを行います。

CPAN は結構接続が切れやすいので、接続が怪しい状況(のような)メッセージが表示されるときは Ctrl+c で操作を中断し、最初からやり直してください。
なお、このとんでもなく面倒な接続作業が必要なのは最初の一回だけです。次からはすぐ "cpan>" が表示されるようになります。
安心してください。
また、既に CPANへの接続設定(Webalizerの検索文字列の日本語化) などで一度CPANの接続設定を済ませている場合は、 "perl -MCPAN -e shell" を実行するとすぐにCPANを利用できる状態になります。

初めてCPANを利用するときは、まず以下のように接続設定を行います。

なお、以下はWBEL4での接続設定の際のメッセージですが、これはサーバーの構成により異なる場合があります。

[root@web1 ~]# perl -MCPAN -e shellEnter

/usr/lib/perl5/5.8.5/CPAN/Config.pm initialized.


CPAN is the world-wide archive of perl resources. It consists of about
100 sites that all replicate the same contents all around the globe.
Many countries have at least one CPAN site already. The resources
found on CPAN are easily accessible with the CPAN.pm module. If you
want to use CPAN.pm, you have to configure it properly.

If you do not want to enter a dialog now, you can answer 'no' to this
question and I'll try to autoconfigure. (Note: you can revisit this
dialog anytime later by typing 'o conf init' at the cpan prompt.)

Are you ready for manual configuration? [yes]Enter

      .
      .
  以下20くらい質問が続きますが、すべて
Enterで回答します。
      .
      .


First, pick a nearby continent and country (you can pick several of
each, separated by spaces, or none if you just want to keep your
existing selections). Then, you will be presented with a list of URLs
of CPAN mirrors in the countries you selected, along with previously
selected URLs. Select some of those URLs, or just keep the old list.
Finally, you will be prompted for any extra URLs -- file:, ftp:, or
http: -- that host a CPAN mirror.

(1) Africa
(2) Asia
(3) Central America
(4) Europe
(5) North America
(6) Oceania
(7) South America
Select your continent (or several nearby continents) [] 2(Asiaを選びます)Enter
Sorry! since you don't have any existing picks, you must make a
geographic selection.

(1) China
(2) Hong Kong
(3) India
(4) Indonesia
(5) Iran
(6) Israel
(7) Japan
(8) Malaysia
(9) Philippines
(10) Republic of Korea
(11) Russian Federation
(12) Saudi Arabia
(13) Singapore
(14) Taiwan
(15) Thailand
(16) Turkey
Select your country (or several nearby countries) [] 7(Japanを選びます)Enter
Sorry! since you don't have any existing picks, you must make a
geographic selection.

(1) ftp://ftp.dti.ad.jp/pub/lang/CPAN/
(2) ftp://ftp.jaist.ac.jp/pub/lang/perl/CPAN/
(3) ftp://ftp.kddilabs.jp/CPAN/
(4) ftp://ftp.nara.wide.ad.jp/pub/CPAN/
(5) ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/
(6) ftp://ftp.u-aizu.ac.jp/pub/CPAN
(7) ftp://ftp.yz.yamagata-u.ac.jp/pub/lang/cpan/
(8) http://ftp.cpan.jp/
Select as many URLs as you like (by number),
put them on one line, separated by blanks, e.g. '1 4 5' [] 5(1〜8の任意の数字)Enter  

Enter another URL or RETURN to quit: []Enter
New set of picks:
 ftp://ftp.ring.gr.jp/pub/lang/perl/CPAN/


commit: wrote /usr/lib/perl5/5.8.5/CPAN/Config.pm

Terminal does not support AddHistory.
cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support available (try 'install Bundle::CPAN')

cpan>

"cpan>" が表示されたら接続完了です。

引き続き次のようにタイプして File/Tail.pm のインストールを行ってください。

Perlモジュールの、グループとモジュール本体の区切り記号である "/" は、実際にCPANでインストールを行う場合には "::" に置き換え、末尾の拡張子 ".pm" は省略してタイプしてください。

インストールは通信環境などによっては数分以上かかる場合がありますので、気長に待ちましょう。

cpan> install File::TailEnter

      .
      .
  しばらく色々メッセージが表示されます。
      .
      .


Installing /usr/lib/perl5/site_perl/5.8.5/File/Tail.pm
Installing /usr/share/man/man3/File::Tail.3pm
Writing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/File/Tail/.packlist
Appending installation info to /usr/lib/perl5/5.8.5/i386-linux-thread-multi/perllocal.pod
 /usr/bin/make install -- OK

cpan> quitEnter  ←cpanからログオフします
[root@web1 ~]#

以上で File/Tail.pm のインストールは完了しましたので、もう一度pop-before-smtpを起動してみてください。残念なことに大抵はまた以下のように盛大にエラーが表示されます。

[root@web1 ~]# /etc/init.d/pop-before-smtp startEnter
Starting pop-before-smtp: Can't locate Net/Netmask.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8....
   中略
BEGIN failed--compilation aborted at /usr/sbin/pop-before-smtp line 15.
                             [失敗]
[root@web1 ~]#
足りないものがあるのだったら、最初から全部教えろ! って感じですが、残念なことにPerlはインタープリタですので、一行づつ実行してみて最初に発生したエラーの原因しか表示できません。
ちなみに、pop-before-smtpの実行に必要なPerlのライブラリは、 プロンプト から
man pop-before-smtp でマニュアルページを開くと載っています。
(最初にそれを言えよ!)

今度は、「 Net/Netmask.pm が足りない」というわけですから、もう一度CPANに ログイン して、先ほどと同じ要領で Net/Netmask.pm をインストールしてください。

[root@web1 ~]# perl -MCPAN -e shellEnter
Terminal does not support AddHistory.

cpan shell -- CPAN exploration and modules installation (v1.7601)
ReadLine support available (try 'install Bundle::CPAN')

cpan> install Net::NetmaskEnter

      .
      .
  しばらく色々メッセージが表示されます。
      .
      .


Installing /usr/lib/perl5/site_perl/5.8.5/Net/Netmask.pm
Installing /usr/lib/perl5/site_perl/5.8.5/Net/Netmask.pod
Installing /usr/share/man/man3/Net::Netmask.3pm
Writing /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/Net/Netmask/.packlist
Appending installation info to /usr/lib/perl5/5.8.5/i386-linux-thread-multi/perllocal.pod
 /usr/bin/make install -- OK

cpan> quitEnter  ←cpanからログオフします
[root@web1 ~]#
man pop-before-smtp でマニュアルページには、この他に Date/Format.pm をが必要だと書かれていますが、これは Date/Parse.pm をインストールすると一緒にインストールされます。

もしもこの コンテンツ のとおりWBEL4またはCentOS4がインストールされていれば、更に Date/Parse.pm Time/HiRes.pm のインストールが必要になるはずですので、同様に作業してインストール行ってください。

WBEL3やCentOS3をお使いの場合には、更に他のモジュールが必要になるかもしれませんが同じ要領でインストールを行ってください。

モジュールのインストールが終わったら、以下のコマンドを実行してインストールされたモジュールを確認してみましょう。

Date/Format.pm Date/Parse.pm TimeDate に含まれますので個別にはインストールする必要はありません。
[root@web1 ~]# perldoc -tT perllocal | grep ModuleEnter
 Sun Nov 4 15:28:10 2007: "Module" File::Tail
 Sun Nov 4 15:29:19 2007: "Module" Net::Netmask
 Sun Nov 4 15:31:12 2007: "Module" TimeDate
 Sun Nov 4 15:31:58 2007: "Module" Time::HiRes
[root@web1 ~]#

Pop-before-smtpの実行に必要なPerlのモジュールがすべてインストールされると、pop-before-smtpデーモンは以下のようにきちんと起動するようになります。

[root@web1 ~]# /etc/init.d/pop-before-smtp startEnter
Starting pop-before-smtp:                 [ OK ]
[root@web1 ~]#

これでPop-before-smtpのインストールは終わりです。

Pop-before-smtpを構成するファイル

"pop-before-smtp-1.33-1.noarch.rpm" から Pop-before-smtp インストール すると、以下のように必要なファイルが配置されます。

Pop-before-smtpを構成するファイル一覧
"Pop-before-smtp"を構成するファイル一覧

Pop-before-smtpの本体プログラムは"/usr/sbin/pop-before-smtp"ですが、通常はこれを直接呼び出すことはないでしょう。

実際にはこの"/usr/sbin/pop-before-smtp"を用いて、起動や終了を容易にコントロールできるように記述された スクリプト である "/etc/rc.d/init.d/pop-before-smtp" を用います。

また"/etc/rc.d/init.d/"の シンボリックリンク が"/etc/init.d/"になっていますので、スクリプトは "/etc/init.d/pop-before-smtp" でも呼び出すことができます。

例えば、

"/etc/rc.d/init.d/" には パス が通っていません パスが通っていないディレクトリにあるファイルの実行 から、パスを省略して実行することはできません。

"/etc/init.d/pop-before-smtp start" →pop-before-smtpの起動

"/etc/init.d/pop-before-smtp stop" →pop-before-smtpの停止

という使い方になります。

Pop-before-smtpの デフォルト の動作は、本体である Perl スクリプト "/usr/sbin/pop-before-smtp" に記述されていますが、通常はこれを編集することはありません。

設定作業は設定の変更を行うために予め準備されている "/etc/pop-before-smtp-conf.pl" に対して行います。

"/etc/postfix/pop-before-smtp.db" が、 MRA 、すなわち UW IMAP への受信要求の成立によって自動で作成される IPアドレス データベース です。

このデータベースが Postfix のインストール パス である "/etc/postfix/" に導入されている理由は、Postfixが現在最もポピュラーな MTA であるからと想像されます。

このデータベースの位置や名称は "/etc/pop-before-smtp-conf.pl" を書き換えることで任意に変更可能です。

従ってMTAとして Sendmail の運用を考えている場合には、できれば "/etc/mail/" 以下にデータベースを持ってきたいところですが、実用上は"/etc/postfix/"以下にデータベースがあっても何ら支障はありませんので、この コンテンツ ではデータベースの位置はデフォルトのまま、PostfixでもSendmailでも利用できるような設定を行っていきます。

Pop-before-smtpの設定について

Pop-before-smtp の設定は、 "/etc/pop-before-smtp-conf.pl" に対して行います。

root アカウント ログイン した状態で、 cp コマンドでバックアップを作成した後、 nanoエディタ から"/etc/pop-before-smtp-conf.pl"を開いてください nanoエディタでファイルを開く

[root@web1 ~]# cp /etc/pop-before-smtp-conf.pl /etc/pop-before-smtp-conf.pl.orgEnter
[root@web1 ~]# nano /etc/pop-before-smtp-conf.plEnter


nanoで/etc/pop-before-smtp-conf.plを開く
nanoで"/etc/pop-before-smtp-conf.pl"を開く

基本的にはどうしても設定を変更しなければならない部分というものはありませんが、設定を変更する可能性のあるところをいくつか挙げてみます。

1.Pop-befor-smtp専用の ログ の出力先の設定(25行目)

Pop-before-smtpの動作のログは、 デフォルト では通常の メールサーバー のログファイル "/var/log/maillog" に一緒に記録されるようになっています。

ただ、メールサーバーの利用頻度が増えてくると、大量のメールログの中にPop-before-smtpの動作ログが埋もれてしまい、動作の不具合が起こったときにチェックし難くなります。

そこでデフォルトの記述である、

#$logto = '/var/log/pop-before-smtp';

のコメント記号 "#" をはずし、

$logto = '/var/log/pop-before-smtp';

とすると、Pop-before-smtpの動作に関するログが、専用のログファイル "/var/log/pop-before-smtp" に記録されるようになります。

もちろんこの場合でも "/var/log/maillog" にも同じ動作ログが記録されます。

2.データベースファイルの指定(28行目)

Pop-before-smtpが出力する IPアドレス データベース ファイルの指定です。

デフォルトでは先に説明したとおり、 "/etc/postfix/pop-before-smtp.db" となります。

設定ファイル中では、

#$dbfile = '/etc/postfix/pop-before-smtp';

となっており、デフォルトのパラメータがそのままコメント化されています。

もしもこのデータベースの出力先やファイル名を変更したい場合は、先頭のコメント記号 "#" をはずして、 絶対パス で記述してください。

つまり、 「Postfixなど金輪際使わない!。」 という変わった方の場合の設定ですね。

例えば、 MTA として Sendmail を使用する場合のデフォルトのデータベースは "/etc/mail/popauth.db" となりますから、この場合には、

$dbfile = '/etc/mail/popauth';

と記述します。データベースファイルの末尾の ".db" は自動的に付加されますので記述する必要はありません。

3.IPアドレスのデータベース上の保持時間(34行目)

データーベースへの保持時間が短すぎると、受信操作から直ぐに送信作業を行わなければならなくなりますので、 MUA の使い勝手は悪くなります。ただ、あまり長くしすぎると逆にセキュリティ上の問題が出てきます。

従って、短くて 5分 、長くても 30分 程度が妥当なところでしょう。

$grace の単位は秒ですので、敢えて 30*60 と記述して、値の変更を「分」単位で行えるように配慮しているわけですね。

デフォルトでは30分に設定されていて、設定ファイル中の記述も、

#$grace = 30*60;

と、デフォルト値でコメント化されています。

この値を変更したい場合は、先頭のコメント記号 "#" をはずし、 "30" の部分を指定したい「分」の値に書き換えてください。

例えば10分に指定したいときは、

$grace = 10*60;

と記述します。

さて、設定ファイルの内容を変更したら"/etc/pop-before-smtp-conf.pl"を保存し、nanoエディタを閉じてください nanoエディタでファイルを閉じる

設定を変更した場合は、pop-before-smtpを再起動する必要があります。

まだpop-before-smtpを起動していないときは、

[root@web1 ~]# /etc/init.d/pop-before-smtp startEnter
Starting pop-before-smtp:                 [ OK ]
[root@web1 ~]#

でpop-before-smtpを起動してください。既に起動しているときは、

[root@web1 ~]# /etc/init.d/pop-before-smtp restartEnter
Stopping pop-before-smtp:                 [ OK ]
Starting pop-before-smtp:                 [ OK ]
[root@web1 ~]#

で再起動を行ってください。

Pop-before-smtpの起動、停止、再起動などの操作については、 pop-before-smtpのコントロールについて を参照してください。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

UW IMAPとPop-before-smtpの連携の確認

MTA Pop-before-smtp に対応させる前に、ひとまず UW IMAP とPop-before-smtpの連携がうまくいくかどうかをチェックしてみましょう。

まず、動作確認に必要な デーモン である "ipop3" または "imap" xinetd から利用可能であることを確認してください POP/IMAPサーバーの設定

それと、Pop-before-smtpが稼動していることも確認してください。もし稼動していなければ前のパートの説明、または Pop-before-smtpのコントロールについて に従って起動してください。

[root@web1 ~]# /etc/init.d/pop-before-smtp statusEnter
pop-before-smtp (pid
17284) を実行中...
[root@web1 ~]#

次に、 "/etc/postfix/pop-before-smtp.db" に登録されている IPアドレス を調べてみましょう。

"/etc/postfix/pop-before-smtp.db"は バイナリ 形式の データベース ですので、 テキスト エディタなどで開くことはできません。

そこでバイナリのデータベースファイルの内容をテキストで表示する "db_dump" コマンド を使って"/etc/postfix/pop-before-smtp.db"の内容を確認します。

[root@web1 ~]# db_dump -p /etc/postfix/pop-before-smtp.dbEnter
VERSION=3
format=print
type=hash
db_pagesize=4096
HEADER=END
DATA=END
[root@web1 ~]#

現在表示されているのは、データベースのパラメータのみで、IPアドレスの登録は何も行われていません。

実際にメールが ダウンロード されなくても構いません。認証されればそれでOKです。

では、 いきなりメールを受信してみる アカウント を設定した サブネット 内の ホスト機 MUA で、 構築中のLinuxサーバー からのメールの受信を行ってみてください。

そしてもう一度"/etc/postfix/pop-before-smtp.db"の中を確認すると、

[root@web1 ~]# db_dump -p /etc/postfix/pop-before-smtp.dbEnter
VERSION=3
format=print
type=btree
db_pagesize=512
HEADER=END
192.168.100.101
ok
DATA=END
[root@web1 ~]#

と、受信作業を行ったホスト機のIPアドレスが登録されているはずです。

この時間は結構アバウトです。
10分に設定していても、データベースからIPアドレスが消えるまで実際には15分〜25分くらいかかることもあります。

そして前のパートで設定した IPアドレスの保持時間 が経過するのを待って、もう一度"/etc/postfix/pop-before-smtp.db"の内容を確認してみてください。登録が消えて、空っぽの状態に戻っているはずです。

これが確認できれば、UW IMAPとPop-before-smtpの連携はOKということになります。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

SendmailとPop-before-smtpとの連携の設定

Sendmail "/etc/postfix/pop-before-smtp.db" を参照し、その中に保持されている IPアドレス ホスト からのメールの中継許可を行うには、 "/etc/mail/sendmail.mc" の末尾に以下の設定を追記し、改めて "/etc/mail/sendmail.cf" を作成する必要があります。

※先頭省略(グレーは既存の記述)
dnl MASQUERADE_DOMAIN(mydomain.lan)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
define(`confMAX_MESSAGE_SIZE',`10000000')dnl
define(`confMAX_RCPTS_PER_MESSAGE', `50')dnl


define(`POP_B4_SMTP_TAG', `')dnl
HACK(`popauth')dnl

この黒字の部分を追加すれば良いのですが、このまま "/etc/sendmail.cf" の作成を実行してもエラーになります。

[root@web1 ~]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cfEnter
/etc/mail/sendmail.mc:170: m4: Cannot open /usr/share/sendmail-cf/hack/popauth.m4: そのようなファイルやディレクトリはありません
[root@web1 ~]#

エラーメッセージからもお分かりのとおり、この場合の "m4" の実行には、 "/usr/share/sendmail-cf/hack/popauth.m4" というファイルが必要となります。

このファイルはSendmailにPop-before-smtpが生成した データベース を参照させるための、 "/etc/mail/sendmail.cf" を作成するのに必要な "/etc/mail/sendmail.mc" のサブスクリプトファイルです。

これはPop-before-smtpの公式サイト、

の、

http://popbsmtp.sourceforge.net/popauth.m4 (スクリプトファイル)

から入手できます。

上のファイルを クライアント機 上に保存して、 FTPクライアント を使って 構築中のLinuxサーバー アップロード し、 mv コマンドを使って "/usr/share/sendmail-cf/hack/" 以下にファイルを移動すればOKです。

または、 wget コマンド で直接 構築中のLinuxサーバー にダウンロードする方法もあります。

[tanaka@web1 ~]$ su -Enter
Password: "root"のパスワードを入力します。 Enter
[root@web1 ~]# cd /usr/share/sendmail-cf/hack/ Enter cdコマンドについて
[root@web1 hack]# wget http://popbsmtp.sourceforge.net/popauth.m4Enter
--07:59:32-- http://popbsmtp.sourceforge.net/popauth.m4
      => `popauth.m4'
popbsmtp.sourceforge.net をDNSに問いあわせています... 66.35.250.209
popbsmtp.sourceforge.net|66.35.250.209|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 2,591 (2.5K) [text/plain]

100%[====================================>] 2,591    --.--K/s  ETA 00:00

07:59:33 (7.82 MB/s) - `popauth.m4' を保存しました [2591/2591]

[root@web1 hack]# lsEnter lsコマンドについて
cssubdomain.m4 popauth.m4
[root@web1 hack]# cd ~Enter
[root@web1 ~]#

準備ができたらもう一度 "/etc/sendmail.cf" の作成を実行してください。今度はきちんと実行できるはずです。

ただし、この方法で作成された "/etc/sendmail.cf" は、 データベース として "/etc/mail/popauth.db" を参照しますから、そのままでは利用できません。

そこで、Pop-before-smtpの デフォルト のデータベースファイル "/etc/postfix/pop-before-smtp.db" から ln コマンドで シンボリックリンク を作成しましょう。

[root@web1 ~]# ln -s /etc/postfix/pop-before-smtp.db /etc/mail/popauth.db Enter
[root@web1 ~]#

これでSendmailは間接的に "/etc/postfix/pop-before-smtp.db" を参照できるようになりますから、 Pop-before-smtp にもSendmailにも特殊な設定を施すことなく、きちんと動作させることができるようになります。

以上でSendmailの必要な設定は終わりました。

編集が終わったら、Sendmailの再起動 Sendmailのコントロールについて を忘れないようにしてください。

以下に "/etc/mail/sendmail.mc" に追加記述する部分だけのコピー&ペースト用の テキスト ファイルを掲載しますので、必要ならば利用してください。

"/etc/mail/sendmail.mc"の実際の編集の方法、"/etc/mail/sendmail.cf"の作成方法については、 sendmail.mcの設定について sendmail.cfの作成について を参考にしてください。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

PostfixとPop-before-smtpとの連携の設定

Postfix "/etc/postfix/pop-before-smtp.db" を参照し、その中に保持されている IPアドレス ホスト からのメールの中継許可を行うには、 "/etc/postfix/main.cf" に以下の設定を追記する必要があります。

smtpd_recipient_restrictions =
 permit_mynetworks,
 check_client_access hash:/etc/postfix/pop-before-smtp,
 reject_unauth_destination

この設定は本来一行に記述すべきものを、 ",(カンマ)" で区切ったものです。

従って、"/etc/postfix/main.cf"の記述ルールに従って、2行目以降の行の先頭には必ず スペース を入れなければならない点に注意してください。

以下にコピー&ペースト用の テキスト ファイルの掲載しますので、必要に応じて利用してください。

"smtpd_recipient_
restrictions"
ディレクティブの詳細についてはこちら smtpd_recipient_restrictionsディレクティブについて を参考にしてください。

実際の"/etc/postfix/main.cf"の編集方法については、 main.cfの設定について を参考にしてください。

編集が終わったら、Postfixの再起動 Postfixのコントロールについて を忘れないようにしてください。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このページの先頭へ↑

POP/IMAP befor SMTPの動作確認

POP/IMAP before SMTP を含めた現在の メールサーバー の状態をまとめてみると、

A. 構築中のLinuxサーバー を含む "192.168.100.0/24" からの送信メールは、無条件で他の MTA への転送を受け付ける。

B. 構築中のLinuxサーバー 及び "192.168.100.0/24" 以外からの送信メールは、POP/IMAP before SMTPによって受信操作が成立した場合にのみ一定時間だけ他のMTAへの転送を受け付ける。

ということになります。

つまり、現在設定中のPOP/IMAP before SMTPのテストは、B.の条件にある場所、例えば外出先から "xxxx@obenri.com"以外の メールアドレス宛てに、

1.送信しても拒否されることを確認する。

2.メールの受信作業を行う。

3.送信できることを確認する。

4.設定時間経過後に、再び送信しても拒否されることを確認する。

という手順で行えば良いことがわかります。

外出するのが億劫な方は、使用している MTA Sendmail の場合は "/etc/mail/access" の内容 /etc/mail/accessの設定 デフォルト

"/etc/mail/access" を編集した後は必ず データベース 化処理 /etc/mail/access.dbの作成 を行ってください。
localhost.localdomain      RELAY
localhost            RELAY
127.0.0.1            RELAY

に、 Postfix の場合は "/etc/postfix/main.cf" "mynetworks_style" ディレクティブ mynetworks_styleディレクティブの設定について を、

"/etc/postfix/main.cf" を修正した後は、必ずPostfixの再起動または設定の再読み込み Postfixのコントロール を行ってください。
#mynetworks_style = class
#mynetworks_style = subnet
mynetworks_style = host

に変更してください。

すると、それぞれのMTAは ループバックアドレス から送信されるメールのみを他のMTAに転送するように設定が変更されます。

つまり動作としては、

A'. 構築中のLinuxサーバー 自身からの送信メールは、無条件で転送を受け付ける。

B'. 構築中のLinuxサーバー 以外からの送信メールは、POP/IMAP before SMTPによって受信操作が成立した場合にのみ一定時間だけ転送を受け付ける。

という状態になりますから、POP/IMAP before SMTPのテストは前に説明した1.〜4.を自宅の LAN 内の ホスト機 から行うことができます。

もちろんこの方法では間接的にしか動作確認はできていないように思えるかもしれませんが、POP/IMAP before SMTPが正常に動作することさえ確認できれば大丈夫です。

要はPOP/IMAP before SMTPの影響範囲がWAN空間かLAN空間かの違いに過ぎませんから、設定範囲を変更してもきちんと動作するのは間違いないからです。

動作確認のテストが終わったら忘れずに設定を元に戻しておきましょう。

関連セクションへ 関連セクション・ Sendmailの設定

関連セクションへ 関連セクション・ Postfixの設定

このサイトは既に更新を終了していますが、今のところ店じまいの予定はありません。 リンクフリー ですので、趣味や勉強のためでしたら、引用、転用、コピー、朗読、その他OKです。このサイトへのリンクについては こちら をご覧ください。
Powered by Apache
”Linux”は、Linus Torvalds 氏の各国における登録商標です。”Red Hat”及びRed Hatのロゴおよび Red Hat をベースとしたすべての商標とロゴは、各国におけるRed Hat, Inc. 社の商標または登録商標です。その他のプログラム名、システム名、製品名などは各メーカー、ベンダの各国における登録商標又は商標です。
www.centos.org - The Community ENTerprise Operating System