2016年09月04日

OpenSMTPD を使う

以下の内容は古く、2018年10月にリリースされた OpenSMTPD 6.4.0 以降では smtpd.conf の文法が大幅に変更されたので、詳細は smtpd.conf(5) をご参照ください。また、本記事で紹介している方法との差分だけを紹介した記事もご参照ください。
OpenBSD project による SMTP サーバの実装である OpenSMTPDOpenBSD の標準 MTA になって2年以上経ちましたので、改めて OpenSMTPD の設定についてまとめてみました。

内容は2年以上前に書いた記事とほぼ同じですが、OpenBSD 6.0 に標準で搭載されているバージョン 6.0.0 を前提とし、シンプルに書き直しています。

(0) smtpd を停止します(OpenBSDでは標準でローカル→ローカルおよびローカル→外部配送用に smtpd が起動しています)
# /etc/rc.d/smtpd stop

(1) メールサーバとして実際のホスト名とは異なるドメインを扱う場合は、/etc/mail/mailname を新規に作成し、そこにメールサーバ名(or ドメイン名、DNSで名前解決できるもの)を記述します。
# echo メールサーバ名 > /etc/mail/mailname
このファイルに記述する文字列は Postfix で言うところの myhostnamemydomain で設定する文字列に相当します。

(2) メールの外部への配送は、認証のある外部SMTPサーバにリレーさせるので、その認証情報を設定します。
# touch /etc/mail/secrets
# chmod 640 /etc/mail/secrets
# chown root:_smtpd /etc/mail/secrets
# echo "ラベル ユーザ名:パスワード" > /etc/mail/secrets
セキュリティを真面目に考えるなら echo ではなくて、vi などのエディタを使うべきでしょう。

(3) 設定ファイル /etc/mail/smtpd.conf を以下のような内容で作成します。
relayhost = "tls+auth://ラベル@リレーサーバ名:587"

table aliases file:/etc/mail/aliases
table secrets file:/etc/mail/secrets

listen on all

accept from any for local alias <aliases> deliver to mbox
accept for any relay via $relayhost auth <secrets>
上記の設定内容は「見たまま」なので説明は不要でしょう。ただし「from ほげほげ」を省略すると「from local」を意味します。因みに、特定のアドレスブロック(例えば、192.168.0.0/24)から無条件でリレーを許可する場合は以下のように設定します。
relayhost = "tls+auth://ラベル@リレーサーバ名:587"
mynetwork = "192.168.0.0/24"

table aliases file:/etc/mail/aliases
table secrets file:/etc/mail/secrets

listen on all

accept from any for local alias <aliases> deliver to mbox
accept from source $mynetwork for any relay via $relayhost auth <secrets>
accept for any relay via $relayhost auth <secrets>

(4) 文法に間違いがないか確認します。
# /usr/sbin/smtpd -n
configuration OK

(5) smtpd を起動します。
# /etc/rc.d/smtpd start

これで /etc/mail/mailname に設定したドメイン宛のメールを受け取れること、またローカルから外部への(リレーサーバ経由での)配送もできることを確認しました。

参考文献
ラベル:opensmtpd
posted by yamaga at 09:18| Comment(0) | TrackBack(0) | OpenBSD | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック