SEO対策とセキュリティで企業をバックアップします。

ITエンジニアの技術力UPをお約束します。

実験:OpenSMTPDでメールサーバ構築(CentOS7)

実験:OpenSMTPDでメールサーバ構築(CentOS7)


ちょっとメールサーバ(MTA)としては、レアなサーバを使って見ました。OpenSMTPDというBSD系UNIXでは知られているSMTPサーバらしい。ネットで調べてみると日本では情報が極めて少ないどんなもんかなーと思い構築してみました。メールは普段IMAPしか使いませんがちょっとレトロなPOPサーバでも入れて見ようかと懐かしいQpopperと組み合わせて見ようと思います。脆弱性とか色々あるけれどセキュリティツールでいくらでも抑え込めるので気にしない。 使ってみた感触は悪くないですね。設計の思想がまた他のMTAと全く異なるのでそこは面白い。postfixには無いこともできそうに思います。このMTAは受信ネットワークインターフェイス単位で制御を細かくできる点が素晴らしいです。本当はfilter文が使えるなら色々試せたのですが必要最低限セキュリティを担保して作ってみました。細かいヘッダやボディチェックはprocmailに任せ、DNSBLとベイジアンフィルターでスパム撃退を行っています。実際の25,587のフロントはfuというDNSBL smtpプロキシーで受信チェックしてそれから後ろにあるopensmtpdへ渡しています。

インストール

ソースでコンパイルしてもよかったが、依存ライブラリーを入れるのが面倒くさいのでパッケージインストールをすることに。epelがインストール済みなら問題無し。 後で調査してみたがopensmtpd-extras*はどうもopensmtpd起動時にロードできないようだ。バグかな。debianの過去issueで同じようなロードできないバグが見つかったので同類の問題か。。。 OpenSMTPDはOS環境によって出来具合いが違うという記述を見たので移植仕切ってなかった可能性はある。ソースでコンパイルするといけるかもしれ無いけども、まあしょうがない。

設定ファイルの作成

細かい解説は省く。インストールすると/etc/opensmtpディレクトリが生成されその配下にopensmtpd.confが出来ているのでそのファイルを編集します。受信箱に入る前にベイジアンフィルターbsfilterを使用しているため内部的にprocmailを使っています。その箇所は割愛します。opensmtpdは前述の通りDNSBLプロキシーから受け取った受信を後ろで待ち受けるためListenはローカルアドレスで受け取るようにしています。

ユーザ登録関連ファイルの作成

サポートドメイン毎のユーザ登録

パスワードの作成と格納

メーラ側ではSMTP認証のタイプはプレーン認証(暗号化なし)を選ぶことになるが上記の通り内部では暗号化しているのでサーバに侵入されて盗まれたところで実害は無いと思います。接続タイプがSTARTTLS/SSLならまあ概ね安全じゃないでしょうか。

filter機能が使えないので、fuを経由してDNSBLをする。

extraパッケージが機能しないのでfilter文が無視される。しょうがないのでDNSBLをproxy仕様で対応することにした。

DNSBL proxy fuの起動

Python2.7とするかpythonとするかはセッティング次第なので環境に合わせてください。

DKIM Proxyの設定

postfixでおなじみのOpenDKIMは使えないという噂なので、 DKIM Proxyを使用します。

DKIM Proxyのサービス登録

DKIM用のDNSレコード設定は他のSMTPサーバと同様なので割愛します。

DKIM proxy起動

qpopperのインストール

Qpopper設定ファイル

/etc/qpopper995.cfgファイルの編集

xinetdのインストール

ログローテーションの設定

APOPのユーザ登録

APOP仕様にするとメールソフトの設定でパスワードの暗号化(CRAM-MD5)が選択できます。

Firewalldで必要なポートをオープンします。

ポート番号、25,587,995をオープンします。

タグ: , , , , ,