古いPleskインストールからiRedMailを実行しているカスタムビルドのUbuntuサーバー(postfix/amavisd/dovecot/etc)にメールを移行しています。
私はすべてのドメインとmysqlバックエンドを管理するためにpostfixadminを使用しています。何かを「エイリアス」したり転送を作成したりする場合、既存のメールボックスを使用できないため、Pleskスタイルの「保存されたコピーでリダイレクト」機能をコピーできないことに気付きました。
私は現在、データベースを介してリモートエイリアスを設定しており、以下を使用しています。
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
データベースを引き続き使用する方法がある場合は、列を追加してクエリを変更する必要がある場合でも、理想的です。
ありがとう!
私はこれを理解しました。基本的に、エイリアスを保存するmysqlテーブルを変更して、アドレスごとに複数のエイリアスをサポートするようにする必要があります。これにより、ローカルドメインとリモート電子メールの両方の配信設定が可能になります。
これはこれまでのところ機能しますが、これを試みた一部の人が転送された電子メールアカウントに重複した電子メールを受け取ったと聞きました。これまでのところ、私はこれを経験していません。
私はpostfixadminを使用してアカウントを管理していましたが、この使用法をサポートしていないため、エイリアスを正しく表示、編集、削除できるようにソースコードを変更する必要がありました。
ここでの主な教訓は、mysqlを使用するときに、新しい主キー、つまり「id」を設定することで、単一のキーを複数の結果にマッピングできるが、postfixクエリロジックを同じに保つことです。返される複数の結果は、デフォルトのdbm/bdファイルの複数の結果と同じですが、ある種類の区切られた結果を持つ単一のキーではなく、同じキーで新しいレコードを作成する必要があります。
他のHTH!
これは、mysqlのすべてのマップで機能するはずです。
Virtual_mailbox_mapsで定義された仮想アカウントがあり、リダイレクトしてメッセージを保持したい場合は、エイリアスマップに2つのエイリアスを挿入する必要があります。
[email protected] [email protected]
[email protected] [email protected]
そして、この構文はすべてのメールを[email protected]にリダイレクトし、redirect @ anotherdomain.comにします。さらに、virtual_mailbox_mapsにユーザー[email protected]があるかどうかを確認し、ある場合は保存します。
updateまたは、( @ Tim Heagele コメントを使用しても構いません)
[email protected] [email protected] [email protected]
非常に簡単な解決策は、送信元アドレスを宛先列のコンマ区切りリストに含めることです。例えば。:
insert into virtual_aliases (domain_id, source, destination)
values (1, '[email protected]', '[email protected],[email protected]');
それは私にとってはうまくいきます。
この質問はかなり古いですが、同じ環境(postfix; dovecot; mysql)で同じ状況に遭遇し、次のアプローチを実現しました。
仮想転送構成を格納する新しいdbテーブルを作成しました。
CREATE TABLE `virtual_forwards` (
`id` int(11) NOT NULL auto_increment,
`domain_id` int(11) NOT NULL,
`source` varchar(100) NOT NULL,
`destination` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
次に、以前に作成した/etc/postfix/mysql-virtual-forward-maps.cf
テーブルを照会し、常に連結されたソースと宛先アドレスを返す新しい仮想転送マップファイルvirtual_forwards
を作成しました(メールはエイリアスAND宛先に送信されます)。
user = mailuser
password = <PASS>
hosts = 127.0.0.1
dbname = <DB_NAME>
query = SELECT CONCAT(source, ',', destination) FROM virtual_forwards WHERE source='%s'
最後に、新しいマップファイルを/etc/postfix/main.cf
にvirtual_alias_maps
として追加しました。
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-virtual-forward-maps.cf
Postfixサーバーを再起動すると、すべてが期待どおりに機能するはずです。コンマで区切られたリストをvirtual_aliases
テーブルに追加するのではなく、このアプローチを好んでいます。しかし、それは私の個人的な問題かもしれません:)
同じ送信元アドレスに基づいて複数の転送を追加できない(たとえば、test @ tworabbits => test1 @ tworabbits、test2 @ tworabbits)ことは知っていますが、virtual_forwards
テーブルをvirtual_forward_sources
およびvirtual_forward_destinations
に順番に簡単に分割できますその要件を満たすために。
私はこれがさらに5年が経過したときに誰かに役立つことを願っています:)
すべてのユーザーのローカルアカウントを持っていますか?
私は。forwardファイルを次のようなもので使用しました:
[email protected], \user
コピーを転送し、ローカルスプールにもコピーを保持します。
おそらくpostfixのmain.cfからディスパッチする方がよりコーシャです:
Main.cfで次のように言います。
### let's archive some incoming/outgoing mail:
recipient_bcc_maps = hash:/etc/postfix/recipient-bcc
sender_bcc_maps = hash:/etc/postfix/sender-bcc
そして、関連するファイル(recipient-bccとsender-bcc)の例:
@sender.domain a.local@address
ファイルを編集した後、データベースを(再)構築することを忘れないでください。
postmap hash:recipient-bcc
postmap hash:sender-bcc