まずは、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]]>
このサーバからPHPでメール送信しGmailで受信すると
このような鍵の掛かっていないマークが表示される
なんとなく、消してみた
// コピーを取る $ sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.`date +%Y%m%d` // Postfixの設定 $ sudo vi /etc/postfix/main.cf // Postfix 2.3以降 smtp_tls_security_level = may // Postfix 2.2以前 # smtp_use_tls = yes $ sudo systemctl reload postfix
同じPHPから再度メールを送信すると・・・
このサーバからPHPでメール送信した場合、
ヘッダ情報にこのようなものが付加される
Received: by sub0123456789.localdomain (Postfix, from userid 48) id 1897014CF23; Mon, 31 Jul 2017 20:59:35 +0900 (JST)
気持ち悪いので、オリジナルドメインに変更してみる
// コピーを取る $ sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.`date +%Y%m%d` // Postfixの設定 $ sudo vi /etc/postfix/main.cf myhostname = original.com $ sudo systemctl reload postfix
同じPHPから再度メールを送信すると・・・
Received: by original.com (Postfix, from userid 48) id 9DBD914CCF5; Tue, 1 Aug 2017 00:12:51 +0900 (JST)
めでたしめでたし