ワイズリマインダー

postfixで受信したメールをDBに登録された宛先に転送する

転送先をDBに登録する事で、色々都合がいいので試してみた。

まずは、main.cfの設定を変える

$ sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.`date +%Y%m%d`
$ sudo vi /etc/postfix/main.cf

virtual_alias_domains = mysql:/etc/postfix/virtual_alias_domains.mysql
virtual_alias_maps = mysql:/etc/postfix/virtual_alias_maps.mysql

※ファイルパス・ファイル名は適宜変更してください。

次にそれらのファイルにDBの情報を加える
■許可するドメインを格納するDB

sudo vi /etc/postfix/virtual_alias_domains.mysql

hosts = localhost
user = POSTFIXUSER
password = POSTFIXPASSWORD
dbname = POSTFIXTABLE
query = select name from domains where name = '%s'

■転送設定を格納するDB

hosts = localhost
user = POSTFIXUSER
password = POSTFIXPASSWORD
dbname = POSTFIXTABLE
query = select fwdaddr from virtual_maps where name = '%s'

次にデータベースとテーブルを作成します

$ mysql -u USER -p
create database POSTFIXTABLE;
grant all on POSTFIXTABLE.* to POSTFIXUSER@localhost identified by 'POSTFIXPASSWORD';
use POSTFIXTABLE;
create table domains (name varchar(254) not null unique);
create table virtual_maps (name varchar(254) not null unique, fwdaddr text not null);
insert into domains (name) values ('DOMAIN.COM');
insert into virtual_maps (name, fwdaddr) values ('HOGE@DOMAIN.COM', 'HOGE@GMAIL.COM');
exit;

設定を読み込ませるために再起動します

$ sudo systemctl restart postfix

これで、「HOGE@DOMAIN.COM」宛のメールが「HOGE@GMAIL.COM」に転送されます

maillogで「error: unsupported dictionary type: mysql」と怒られるようでしたら
postfix-mysql をインストールしてください。

sudo dnf install -y postfix-mysql

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください