ラベル postfix の投稿を表示しています。 すべての投稿を表示
ラベル postfix の投稿を表示しています。 すべての投稿を表示

2019年3月22日金曜日

DKIM設定してさらにメール到達率を上げる

どうも、俺です。

男もすなるDKIMといふものを女もししてみむとてするなり。

環境はCentOS7.2 + Postfix 2.10.1 です。

OpenDKIMのインストール

yumで入れます。
# yum install opendkim

鍵やら何やらを作るので、専用のディレクトリを作成します。
# mkdir /etc/opendkim/keys/MYDOMAIN.com(ドメイン名)

で、鍵やら何やらを作ります。
# opendkim-genkey -D /etc/opendkim/keys/MYDOMAIN.com/ -b 1024 -d MYDOMAIN.com -s koexuka

-Dは生成ディレクトリ
-bは1024や2048など鍵のビット長
-dはドメイン名
-sはセクレタ名。鍵を識別できる分かりやすい名前が良いです。サイト名や作成日付など。

これでファイルが2つできてるはずです。
# ls -l /etc/opendkim/keys/MYDOMAIN.com

-rw------- 1 opendkim opendkim 887  3月 22 15:11 koexuka.private
-rw------- 1 opendkim opendkim 317  3月 22 15:11 koexuka.txt


設定ファイルの更新

KeyTableファイルを編集します。
# vim /etc/opendkim/KeyTable

koexuka._domainkey.MYDOMAIN.com MYDOMAIN.com:koexuka:/etc/opendkim/keys/MYDOMAIN.com/koexuka.private

SigningTableファイルを編集します。
# vim /etc/opendkim/SigningTable

*@MYDOMAIN.com koexuka._domainkey.MYDOMAIN.com

TrustedHostファイルを編集します。
# vim /etc/opendkim/TrustedHosts

127.0.0.1
::1
#host.example.com
#192.168.1.0/24

CIDR形式で記述できます。
上記IPにマッチした場合だけ署名されます。

opendkim.confを編集します。
# vim /etc/opendkim.conf

Mode sv
#KeyFile        /etc/opendkim/keys/default.private #コメントアウトする
KeyTable       /etc/opendkim/KeyTable
SigningTable   refile:/etc/opendkim/SigningTable
ExternalIgnoreList     refile:/etc/opendkim/TrustedHosts
InternalHosts  refile:/etc/opendkim/TrustedHosts

/etc/sysconfig/opendkimファイルを編集します。
# vim /etc/sysconfig/opendkim

# これを追加
AUTOCREATE_DKIM_KEYS=NO

main.cfを編集します。
#vim /etc/postfix/main.cf

# これを追加
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Postfixを再起動します。
# systemctl restart postfix


ドメイン情報を更新

利用しているDNSサーバーでTXTゾーンにDKIMの内容を反映させます。
まず、公開鍵の内容を確認します。

# cat /etc/opendkim/keys/MYDOMAIN.com/koexuka.txt

koexuka._domainkey     IN      TXT     ( "v=DKIM1; k=rsa; "
          "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNAD(〜略〜)//ciSVp9o(〜略〜)ZBCwIDAQAB" )  ; ----- DKIM key koexuka for MYDOMAIN.com

DNS管理画面で以下を追加します。
Aレコード koexuka._domainkey.MYDOMAIN.com 123.45.67.89(IPアドレス)
TXTレコード koexuka._domainkey p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNAD....ZBCwIDAQAB; v=DKIM1; k=rsa;


あとは実際にメールを送信してみて、受信側でメールヘッダに
dkim=pass
とあればOKです!

以上でぇぇぇぇえぇ〜す。

2010年12月9日木曜日

postfixでpermission(権限)に関するっぽいエラーが出る

どうも、俺@寝る前です。

なので超適当ですが、postfixを起動させた時や、エラーにパーミッション(権限)に関するっぽいようなエラーが出る場合は
# postfix stop
# postfix check // ここでエラー内容確認
# postfix set-permissions // 権限修正
# postfix start

で直ることもありますよ。


おやすみなさいぃぃぃぃぃ。

2009年12月25日金曜日

postfixでVirtualアカウントの管理をMySQLで

どうも、俺@仕事中です。
今日はPostfix(2.5.5)のvirtual_mailbox_mapsについてです。
しかもそれをMySQLで管理しちゃおう!という話です。

そもそもvirtual_mailbox_mapsというのは、簡単に説明するとその名の通り
そのサーバのアカウントにないアカウント(仮想アカウント)のメールをメールボックスに保存するというものです。
今回はMySQLを利用しますので、postfix-2.5.5ソースをDLして、まず
# tar zxvf postfix-2.5.5.tar.gz
# cd postfix-2.5.5
# make makefiles AUXLIBS='-L/usr/local/lib -L/usr/local/mysql/lib/mysql -lssl -lcrypto -lmysqlclient -lz -lm' CCARGS='-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_TLS -I/usr/local/include -DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\"'
(パスは環境に合わせてね)のコマンドを打ちます。
ここでlibmysqlclient.soが見つからないぜ!的なエラーが出る場合は、
-L/usr/local/mysql/lib/mysqlのパスが正しいかどうか確認し、それも合っている場合は、
# vim /etc/ld.so.conf.d/mysql.conf
/usr/local/mysql/lib/mysql
を追加(パスは適宜合わせてね)。で、
# ldconfig -v
# make upgrade
でもう一度 make makefiles を打ちます。次に、
# make && make install(全てEnter)
でインストール完了です。
次に、main.cfの編集です。
# vim /etc/postfix/main.cf
fallback_transport = virtual # ローカルに存在しないアカウント宛の処理
virtual_mailbox_base = /usr/local/virtual # 適宜あわせてね
virtual_mailbox_maps = /etc/postfix/virtual_mailbox_mysql
virtual_uid_maps = static:10000
virtual_gid_maps = static:1000
を追加します。

続いてグループ、ユーザの作成。
# groupadd -g 10000 vgroup
# useradd -u 10000 -g vgroup -d /usr/local/virtual -s /sbin/nologin vuser


次は、virtual_mailbox_mysqlの設定。
# vim /etc/postfix/virtual_mailbox_mysql
hosts = localhost
dbname = mailsystem
user = mysql_user
query = SELECT concat(name,'/') FROM mail_account WHERE active=1 AND domain='%d' AND name='%u'

で、これをhash化します。
# postmap /etc/postfix/virtual_maibox_mysql


続いてMySQLの構築。今回はMySQLは自サーバで稼動しているものとします。
# mysql -h localhost
mysql> create database mailsystem;
mysql> create table mail_account (
id int not null auto_increment,
name varchar(128) not null default '', # virtual_accountの名前
password varchar(128) not null default '', # virtual_accountのPass
domain varchar(128) not null default '', # サーバドメイン
active tinyint(1) not null default 0, # 利用する/しないのフラグ
primary key (id)
);

INSERT INTO mail_account (name, password,domain,active) values ('username','password','mydomain.jp',1);
テーブル操作権限等は適宜指定してください。

では、postfix起動します。
# /usr/sbin/postfix start

これで、MySQLに入れたアカウント宛のメールであれば、/usr/local/virtual以下へ配送されます。

ちなみに、配送の確認をするには
# postmap -a "username@mydomain.jp" mysql:/etc/postfix/virtual_mailbox_mysql

とやって、対象の結果(今回で言うと username/)が返って来ればOKです。
何も表示されない場合は、何か間違えてます。

めでたし、めでたし!お(・∀・)め(・∀・)で(・∀・)と(・∀・)う!