仮想ドメイン (Postfix)/完全な仮想ドメインにする方法

提供: Sympa-JA
移動: 案内, 検索

ここでは、6.1.18版以降での設定方法を説明しています。

6.1.17以前の版を使っている場合は「仮想ドメイン (Postfix)/完全な仮想ドメインにする方法 (6.1.17以前)」をご覧下さい。

この方法の長所は次の通りです。

  • Postfixの仮想ドメイン機能を利用するので、存在しないリストアドレスへ送られたメッセージは、エラーメッセージを返信することなくSMTPセッション中に拒否します。そのため、後方散乱メール (backscatter) を発生させません。
  • 不要なエイリアスはできません。

6.1.17以前の版では、Sympaの再コンパイルが必要でした。また仮想ドメインと非仮想ドメインの両方を扱うには少々工夫がいりました。これらの問題は6.1.18版で解決されます。

目次

設定

Sympaの設定 --- すべてのドメインを仮想ドメインにする場合

エイリアス生成テンプレートをカスタマイズして、エイリアスの代わりにトランスポートマップを生成させるようにします。既定のテンプレートは /home/sympa/default/list_aliases.tt2ですが、これを直接変更せず、コピーして使います。

  • /home/sympa/etc/ に置きます。

/home/sympa/etc/list_aliases.tt2

#--- [% list.name %]@[% list.domain %]: list transport map created at [% date %]
[% list.name %]@[% list.domain %] sympa:[% list.name %]@[% list.domain %]
[% list.name %]-request@[% list.domain %] sympa:[% list.name %]-request@[% list.domain %]
[% list.name %]-editor@[% list.domain %] sympa:[% list.name %]-editor@[% list.domain %]
#[% list.name %]-subscribe@[% list.domain %] sympa:[% list.name %]-subscribe@[%list.domain %]
[% list.name %]-unsubscribe@[% list.domain %] sympa:[% list.name %]-unsubscribe@[% list.domain %]
[% list.name %][% return_path_suffix %]@[% list.domain %] sympabounce:[% list.name %]@[% list.domain %]

リストの作成・削除の際に、sympa_aliasesではなくsympa_tranportが更新されるようにします。また、マップの更新にnewaliases(1)ではなくpostmap(1)を使います。主設定ファイルsympa.confを変更します。

sympa.conf

sendmail_aliases /home/sympa/etc/sympa_transport
aliases_program postmap
aliases_db_type hash

以上の設定で、sympa_transportがリストの作成・閉鎖・再開・削除とともに自動更新されるようになります。

Sympaの設定 --- 一部のドメインだけを仮想ドメインにする場合

エイリアス生成テンプレートをカスタマイズして、エイリアスの代わりにトランスポートマップを生成させるようにします。既定のテンプレートは /home/sympa/default/list_aliases.tt2ですが、これを直接変更せず、コピーして使います。

  • /home/sympa/etc/ドメイン/ に置きます (ディレクトリがなければ作成します)。

/home/sympa/etc/ドメイン/list_aliases.tt2

#--- [% list.name %]@[% list.domain %]: list transport map created at [% date %]
[% list.name %]@[% list.domain %] sympa:[% list.name %]@[% list.domain %]
[% list.name %]-request@[% list.domain %] sympa:[% list.name %]-request@[% list.domain %]
[% list.name %]-editor@[% list.domain %] sympa:[% list.name %]-editor@[% list.domain %]
#[% list.name %]-subscribe@[% list.domain %] sympa:[% list.name %]-subscribe@[%list.domain %]
[% list.name %]-unsubscribe@[% list.domain %] sympa:[% list.name %]-unsubscribe@[% list.domain %]
[% list.name %][% return_path_suffix %]@[% list.domain %] sympabounce:[% list.name %]@[% list.domain %]

リストの作成・削除の際に、sympa_aliasesではなくsympa_tranportが更新されるようにします。また、マップの更新にnewaliases(1)ではなくpostmap(1)を使います。ドメインのrobot.conf (なければ作成する) に設定を追加します。

/home/sympa/etc/ドメイン/robot.conf

sendmail_aliases /home/sympa/etc/sympa_transport
aliases_program postmap
aliases_db_type hash

Postfixの設定

master.cfで、新たなトランスポート「sympa」と「sympabounce」を定義します。前者はリストへの投稿やメールコマンドの処理、後者はバウンスの処理のためのトランスポートです。

master.cf

# Sympa
sympa   unix    -       n       n       -       -       pipe
  flags=hqRu user=sympa argv=/home/sympa/bin/queue ${nexthop}
sympabounce unix -      n       n       -       -       pipe
  flags=hqRu user=sympa argv=/home/sympa/bin/bouncequeue ${nexthop}
  • flagsオプションには「R」が必須です。「F」は必要ありません。

仮想ドメイン用の設定をします。

main.cf

# virtual(8) maps
virtual_mailbox_domains = ...
  hash:/etc/postfix/transport.sympa
virtual_mailbox_maps = ...
  hash:/etc/postfix/transport.sympa,
  hash:/home/sympa/etc/sympa_transport,
  hash:/etc/postfix/virtual.sympa
# virtual(5) maps
virtual_alias_maps = ...
  hash:/etc/postfix/virtual.sympa
# transport maps
transport_maps = ...
  hash:/etc/postfix/transport.sympa,
  hash:/home/sympa/etc/sympa_transport
# For VERP
recipient_delimiter = +
注 
main.cfのmydestinationパラメータの値に仮想ドメインと同じドメインが含まれていると、Postfixはシステムログに警告を出力します。仮想ドメインにするドメインはmydestinationから取り除いてください。

transport.sympa は仮想ドメインリスト、仮想ドメインのアドレスリスト、トランスポートマップを兼ねています。sympa_transportは仮想ドメインのアドレスリスト、トランスポートマップを兼ねています。いずれのファイルでも、実際にマップの右辺を使うのはトランスポートマップとして参照するときだけです。また、仮想ドメインのエイリアスはvirtual.sympaに記述します。

Apacheの設定

Sympa自身が名前ベースの仮想ホストを処理する機能を持っていますので、Apacheに特別な設定はいりません。ただし、ウェブインタフェースのドメインを仮想ホストとしていた場合は、新たに追加するウェブドメインでもアクセスできるようにしなければなりません。インストール (ソースパッケージ)#FastCGIのインストールを参照してください。

仮想ドメインの追加

ここでは、次のような仮想ドメインを追加することにします。

  • 電子メールインタフェースのドメイン: virtual.dom.ain
  • ウェブインタフェースのドメイン: www.virtual.dom.ain

電子メールインタフェースのドメインとウェブインタフェースのドメインは同一でもかまいませんし、異なっていてもかまいません。ここでは区別できるように変えています。

DNSへのホストの登録

インターネットから仮想ドメインにアクセスできるようにするために、ドメインのDNSに仮想ドメインの情報を登録しておかなければなりません。

  • virtual.dom.ainのMXレコードとして、Sympaが動作しているホストのホスト名を登録します。
  • www.virtual.dom.ainのCNAMEレコードやAレコードとして、Sympaが動作しているホストのホスト名やIPアドレスを登録します。

登録の詳しい方法については、DNSサーバのマニュアルを参照してください。たとえばBINDネームサーバソフトウェアでは、ゾーンファイルに次のような情報を追加する必要があります。

$ORIGIN virtual.dom.ain
@       IN      MX 10 my.host.fqdn.
www     IN      CNAME my.host.fqdn.

Sympaの設定

Sympaでは、仮想ドメインごとに設定を変更できます。

ドメインの設定ファイル

etcディレクトリの中に、ドメイン名のサブディレクトリを作成してそこに設定ファイルを置きます。

$ cd /home/sympa
# mkdir etc/virtual.dom.ain
# chown sympa:sympa etc/virtual.dom.ain

仮想ドメインの主設定ファイルを作成します。ファイル名はetc/ドメイン名/robot.confです。sympa.confおよびwwsympa.confでのデフォルト設定を、ドメインごとに上書きすることができます (robot.confに書かなかった設定はデフォルトのままです)。詳細→robot.conf

/home/sympa/etc/virtual.dom.ain/robot.conf

http_host www.virtual.dom.ain
cookie_domain www.virtual.dom.ain
wwsympa_url http://www.virtual.dom.ain/sympa
title virtual.dom.ain Mailing list service

その他の設定ファイルも、仮想ドメインのディレクトリの下に作成することで Sympa のデフォルト設定を上書きできます。詳細→Category:設定ファイル

リストデータ用ディレクトリの作成

list_dataディレクトリの中に、ドメイン名のサブディレクトリを作成します。この下にリストデータが格納されます。

$ cd /home/sympa
# mkmdir list_data/virtual.dom.ain
# chown sympa:sympa list_data/virtual.dom.ain
注 
Sympaの5.4.x以前からアップデートしている場合、リストデータディレクトリの名前はlist_dataではなくexplであるかもしれません。

Postfixの設定

前節の設定にあるtransport.sympaとvirtual.sympaを下記の内容で作成します。すでに仮想ドメインを追加したことがあれば、ファイルはあるはずですから、下記の内容を追加します。

transport.sympa

# Robot virtual.dom.ain
virtual.dom.ain                  error:User unknown in recipient table
sympa@virtual.dom.ain            sympa:sympa@virtual.dom.ain
listmaster@virtual.dom.ain       sympa:listmaster@virtual.dom.ain
bounce@virtual.dom.ain           sympabounce:sympa@virtual.dom.ain

virtual.sympa

sympa-request@virtual.dom.ain    postmaster@localhost
sympa-owner@virtual.dom.ain      postmaster@localhost

トランスポートマップと仮想エイリアスのマップを作成します。

# postmap hash:/etc/postfix/transport.sympa
# postmap hash:/etc/postfix/virtual.sympa

サービスの再起動

すべての設定が終わったら、Postfix、Sympa、Apacheを再起動します。

動作確認

ウェブインタフェースに、追加した仮想ホストのURL http://www.virtual.dom.ain/sympa でアクセスします。リストのないウェブサイトが表示されるはずです。

新しくリストを作成してみます。etc/sympa_transportが更新され、新しいリストのトランスポートが追加されるはずです。例:

#--- testlist@virtual.dom.ain: list transport map created at 15 Apr 2010
testlist@virtual.dom.ain sympa:testlist@virtual.dom.ain
testlist-request@virtual.dom.ain sympa:testlist-request@virtual.dom.ain
testlist-editor@virtual.dom.ain sympa:testlist-editor@virtual.dom.ain
#testlist-subscribe@virtual.dom.ain sympa:testlist-subscribe@virtual.dom.ain
testlist-unsubscribe@virtual.dom.ain sympa:testlist-unsubscribe@virtual.dom.ain
testlist-owner@virtual.dom.ain sympabounce:testlist@virtual.dom.ain

非仮想ドメインを仮想ドメインに移行する

このページで述べている設定をすると、既存の非仮想ドメインは使えなくなってしまいます。そこで、非仮想ドメインも仮想ドメインに移行します。#仮想ドメインの追加でやったのと同じ結果になるようにすればいいのです。

  1. Sympaのetcディレクトリの下にドメイン名のディレクトリを作り、最低限の内容のrobot.confを設置します。
  2. list_dataディレクトリの下にドメイン名のディレクトリを作り、既存のリストデータをすべてこの下に移します。
  3. Postfixのmain.cf設定ファイルでmydestination設定から既存のドメインを除き、今度はtransport.sympaとvirtual.sympaに既存ドメインのための設定を追加します。
  4. 既存のリストの情報を含むsympa_transportを作成します。新しいファイルは /home/sympa/spool/tmpの下に、sympa_aliases.xxxxx (xxxxxは作成の都度変わります) というファイルとしてできます。
# /home/sympa/bin/sympa.pl --make_alias_file --domain virtual.dom.ain
Sympa aliases file is /home/sympa/spool/tmp/sympa_aliases.10611 file made, you probably need to installed it in your SMTP engine

spool/tmp 下にできた sympa_aliases.xxxx を sympa_transport へ移動し、newtransport.sh を実行してマップを更新します。

$ cd /home/sympa
# mv spool/tmp/sympa_aliases.10611 etc/sympa_transport
# su - sympa /home/sympa/bin/sympa_newaliases.pl
個人用ツール
名前空間

変種
操作
案内
ツール