SSブログ

OpenSMTPDにチャレンジ その1 (FreeBSD 10.3R、2016/09/11) [FreeBSD]

postfixでメールサーバを運用しており、今現在、特に不満はありません。ただ、OpenSMTPDという新しいおもちゃを見つけてしまいました。ハッカーの血がたぎります。幸いなことにportsにも登録されているので、少なくともインストールに躓くことはないでしょう。
現行バージョンは5.9.2p1のようなので、サクッとインストールしてしまいます。
root@mybsd:/usr/local/etc/mail # pkg search opensmtpd
opensmtpd-5.9.2p1_1,1          Security- and simplicity-focused SMTP server from OpenBSD
opensmtpd-devel-201606220754,1 Security- and simplicity-focused SMTP server from OpenBSD
opensmtpd-extras-201606230001  Addons for OpenSMTPD
opensmtpd-extras-filter-clamav-201606230001 Check messages with ClamAV in OpenSMTPD
opensmtpd-extras-filter-dkim-201606230001 DKIM-signing filter for OpenSMTPD
opensmtpd-extras-filter-dnsbl-201606230001 DNSBL-checking filter for OpenSMTPD
opensmtpd-extras-filter-lua-201606230001 LUA-script filter support for OpenSMTPD
opensmtpd-extras-filter-monkey-201606230001 Arbitrary delay or reject filter for OpenSMTPD
opensmtpd-extras-filter-pause-201606230001 Pause incoming OpenSMTPD messages to reduce spam
opensmtpd-extras-filter-perl-201606230001 Perl-script filter support for OpenSMTPD
opensmtpd-extras-filter-python-201606230001 Python-script filter support for OpenSMTPD
opensmtpd-extras-filter-regex-201606230001 Regular expression filter for OpenSMTPD
opensmtpd-extras-filter-spamassassin-201606230001 Spamassassin filter addon for OpenSMTPD
opensmtpd-extras-queue-python-201606230001 Python queue support for OpenSMTPD
opensmtpd-extras-queue-ram-201606230001 RAM queue support for OpenSMTPD
opensmtpd-extras-scheduler-python-201606230001 Python scheduler support for OpenSMTPD
opensmtpd-extras-scheduler-ram-201606230001 RAM scheduler support for OpenSMTPD
opensmtpd-extras-table-ldap-201606230001 LDAP table support for OpenSMTPD
opensmtpd-extras-table-mysql-201606230001 MySQL table support for OpenSMTPD
opensmtpd-extras-table-passwd-201606230001 passwd(5) table support for OpenSMTPD
opensmtpd-extras-table-postgresql-201606230001 PostgreSQL table support for OpenSMTPD
opensmtpd-extras-table-python-201606230001 Python table support for OpenSMTPD
opensmtpd-extras-table-redis-201606230001 Redis table support for OpenSMTPD
opensmtpd-extras-table-socketmap-201606230001 Socketmap table support for OpenSMTPD
opensmtpd-extras-table-sqlite-201606230001 SQLite table support for OpenSMTPD
opensmtpd-extras-tool-stats-201606230001 Statistics tool for OpenSMTPD

設定サンプル等は、Webから探します。予想通り情報が少ないですね。しかしOpenBSDの成果物の良いところは、公式マニュアルがしっかりメンテナンスされていること。きちんと整備されたマニュアルもセキュリティの向上に欠かせないという思想からですね。だから困ったときは公式マニュアルを読めば良いのです。
とは言っても、設定サンプルがないと設定しにくいもの。数少ない日本語サイトを探します。一つ分かったのは、いろいろと仕様改変が行われていること。代表的なところとしては、mapコマンドがtableコマンドに置換されたことでしょうか。

本格運用はまだですが、とりあえずテストコンフィグで色々と試しています。ISPメールサーバへのSTARTTLSによるSMTPメール転送などもすでに動作確認できています。その中(というより、そもそものところで)で出てきた問題は3つ。

まず、インストール後のディレクトリ等のパーミッションが怪しいです。私が何も考えずに-Rオプションで一括して所有者がパーミッションを変えてしまったような気がしないでもないですが、下記のようなエラーメッセージが出ました。
/var/spool/smtpd is not owned by uid 0
/var/spool/smtpd is not owned by gid 0
/var/spool/smtpd/offline is not owned by gid 258

pkg delete/installをやり直してもダメだったので、pkg intall時に表示される下記コマンド(本来は古いバージョン使用者向けの移行用設定)を適用しましょう。さすがOpenBSD系だけあって、権限にはうるさいです。
  2. Update permissions:

     # chown -R _smtpq:wheel /var/spool/smtpd/corrupt
     # chown -R root:_smtpq /var/spool/smtpd/offline
     # chown -R _smtpq:wheel /var/spool/smtpd/purge
     # chown -R _smtpq:wheel /var/spool/smtpd/queue
     # chown -R _smtpq:wheel /var/spool/smtpd/temporary
     # chmod -R 770 /var/spool/smtpd/offline
     # chmod -R 700 /var/spool/smtpd/purge

次に/etc/mail/mailer.confです。必要な修正を行ってくれません。portsディレクトリにはそれっぽい修正用のスクリプト(/usr/ports/mail/opensmtpd/files/pkg-install.in)が置いてあるのですが、pkgでインストールした時は何も修正されませんでした。そのため、自分で下記内容に修正します。
もしかすると一時期postfix等のインストールでいろいろ弄っていたので、mailer.confが初期状態から改変されており、あえて修正されなかったのかもしれません。(/usr/local/sbin/sendmailって明らかに初期状態ではないですね)
#sendmail       /usr/local/sbin/sendmail
#send-mail      /usr/local/sbin/sendmail
#mailq          /usr/local/sbin/sendmail
#newaliases     /usr/local/sbin/sendmail

sendmail        /usr/local/sbin/smtpctl
send-mail       /usr/local/sbin/smtpctl
mailq           /usr/local/sbin/smtpctl
makemap         /usr/local/libexec/opensmtpd/makemap
newaliases      /usr/local/libexec/opensmtpd/makemap

最後にmakemapについて。データベースファイル(テーブルコマンドで読み込むファイル)をmakemapで処理するのですが、私はFreeBSDに標準インストールされている/usr/sbin/makemapを使っていました。どうやらこれではダメで、/usr/local/libexec/opensmtpd/makemapを使う必要がありました。
とりあえずそんなところでしょうか。
タグ:OpenSMTPD
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。