CentOS+Postfix環境でDKIM導入

CentOS5, CentOS6でpostfix使ってるところにDKIMを入れたのでメモ。

EPELを有効にしてyum -y install opendkimで入る。あっさり。

■PostfixをDKIM認証に対応(CentOS) – Angel21 HP Blog
人様のblogを頼りに一通り設定する。
# mkdir /etc/opendkim/keys/example.com
# opendkim-genkey -D /etc/opendkim/keys/example.com -d example.com -s 20170208
# chown opendkim:opendkim /etc/opendkim/keys/example.com/*

namedへTXTレコード追加
20170208._domainkey IN TXT "v=DKIM1; k=rsa; p=Mf(略)B"
_adsp._domainkey IN TXT "dkim=unknown"
_dmarc IN TXT "v=DMARC1;p=none;rua=mailto:dmarc@example.com;ruf=mailto:dmarc@example.com;rf=afrf;pct=100"

/etc/opendkim.conf
Mode sv
#KeyFile
KeyTable
SigningTable
ExternalIgnoreList
InternalHosts

秘密鍵指定
/etc/opendkim/KeyTable
20170208._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/20170208.private
ドメイン指定
/etc/opendkim/SigningTable
*@example.com 20170208._domainkey.example.com

追加でポイント

●namedで _ アンダースコアが使えない
named-checkzoneしてみると bad owner と言われてアンダースコアから始まる名前が使えない。
_dmarcを書くときに困るので、対象ゾーンにcheck-names ignoe;を追記して通るようにする。
zone "example.com" IN {
type master;
file "example.com.hosts";
check-names ignore;
};

●opendkimの鍵ファイルがセキュアじゃないと言われる
実際に送信してみるとエラーで送れてない。
maillogを見ると
key data is not secure: opendkim is in group 0 which has multiple users (e.g., "sync")
とエラーが出てる。にしてもgroup 0ってなぁ…

ググっても日本語資料皆無なので英語フォーラム見たら、軒並み回答なし。
しかしヒントっぽいのがあったので

■opendkim.conf

/etc/opendkim.confの末尾に RequireSafeKeys false を追加。これで動いた。

WordPressサイトの全SSL化…一部リンクがSSLにならない

とあるwordpressを使ってるサイトを常時SSL化することになりました。
VPSだったのでSSL証明書の取得からインストールまでLet’s Encryptですんなり行きました。

■Let’s Encrypt 総合ポータル

次にWordpressの設定でホームURLを http から https に変更します。
そして全文検索してhttpのリンクをhttpsにします。
このへんはSearch and Replace for WordPress Database Scriptを使用。

■WordPress移行時にURLをSQLで直接一括置換はダメ! 「Search and Replace for WordPress Databases Script」を使おう | infoScoop開発者ブログ

あとはテーマのファイルをgrepしてhttp箇所を //からの表記に直したり…

しかしメニューのリンクとか一部プラグインの出力がSSLにならない。
ソースを見るとget_page_link()とかで呼んでるわけです。
じゃぁ中身の設定に従うはずだよなぁ…と wp-includes/link-templates.php を読み、
データベースを疑い…わからん。

しかし結局Really Simple SSLというプラグインを入れたらあっさり解決。
なんだ、どこにこの違いがあったのだ…

■WordPressを一瞬でHTTPS化するプラグイン「Really Simple SSL」の使い方

今後常時SSLサイトが増えるだろうし、もうちょっと根本的に原因を探りたいのだがなぁ

さくらのVPSの制限は2時間解けない

制限は突然来る。

サーバーの応答がないとヘルプをいただき(私の管理してるところじゃないんだけど…)
とりあえず見てみる。
webサーバー応答無し、ssh応答なくてログインできない、pingは通る。

さくらのVPSのコントロールパネルを見てみると
「このサーバはストレージのIOPS(1秒あたりのデータ入出力数)が制限されています。」
ですって。

朝9時直前ぐらいに制限がかかったようで、
コンソールを見るとOOM Killerの嵐。
おそらくswapファイルに大量のI/Oが発生していたのでしょう。

サポートに問い合わせると、制限は2時間だそうで、
「こちらでも解除はできないので、2時間待ってください」とのこと。

2時間も待ってられないので、とりあえず根気よくコンソールからログインを試行、
何度かチャレンジして成功したので、httpdとmysqldを停止。
みるみると負荷が下がっていくぞ…!

apacheのkeepalive timeoutが若干長いかなーというぐらいで他は特に気にならず。
プロセス数とかは追って調整するとして、再起動。
無事、動く。

wgetで巡回させても負荷がそんなに増えなかったのでこれで良しということにして完了。

サポートに言っても解除できないというのは覚えて置いた方が良いなー。

■さくらのVPSは突然制限かけられて激重になるから要注意 | GUiLZ.ORG

■「さくらのVPS」のディスク負荷が早朝4~6時に高い件。iowaitが酷いレベルに | TeraDas-テラダス

古いサーバーにCentOS7を入れようとして苦労

DELLのPowerEdge T105が転がっていたので再利用のためCentOS7をインストール。
LiveUSB CreatorでUSBメモリにnetinstallのisoを入れ、起動。

諸々設定してインストール開始すると、途中でハングアップ。3回やって同じところでハングアップ。
インストーラー起動時にInstall CentOS7~とか出てる画面でESCを押して linux text を指定、
CUIインストーラーで無事完了。
マウスを繋いでいなかったのでCUIのほうが楽だったね…

起動時、CentOS Linux 7 (Broken)と出てる。
指定したリポジトリが http://buildlogs.centos.org/centos/7/os/x86_64-latest だったので関係あるようだ。
壊れているわけじゃ無くて意図的に出てるものなんですって。

minimalインストール完了。
起動したのでyum updateしようとしたら"There are no enabled repos."と出る。
見たら /etc/yum.repos.d/ が空っぽになっていた。
CentOS-Baseすらないのかよ…同じ症状を当たってみるが特に解決策はナシ。

仕方ないので既にCentOS7が入っているサーバーから
/etc/yum.repos.d/ と /etc/pki/rpm-gpg/ をコピーしてくる。
sshは使えるのでこれで転送することにする。

コピーのためこのサーバーのIPアドレスを見ようとifconfigするが、ifconfig自体がない。
net-toolsが入らないといかんのでした。CentOS7デフォルトで使えるのは ip addr showでした。

reposがコピーできて一応動いたようです。

[OpenVPN] fragmentに注意

私の回りでCentOSを使っているところはぼちぼちCentOS7に移行してきてまして
OpenVPNを入れたら昔通りconfigを書いても繋がらない状況に。

具体的には、接続は確立するけどpingが失敗する。
ログを見ていたら
FRAG_IN error flags=0xfa2a187b: FRAG_TEST not implemented
なんてメッセージが出てる。

FRAG……fragment!!

そういえばサーバー側は特に具体的にmtuを書いてなかった。
一方でconfigは

fragment 1280
mssfix

なんて設定が書いてある(たぶんどっか西日本で使った名残か?)
両者で合わせないといけない部分が違ってた。

とりあえず今回は設定を外して運用。

しばらく使ってみて遅く感じるようなら、
改めてserverとclient両方に上記を追加する。