【docker】コンテナ内からホストのpostfixにリレー送信した際の試行錯誤【openvas】

投稿者: | 2019-02-19

はじめに

脆弱性スキャナーopenvasのdocker版にて通知メール送信に行ったことを記載します。

dokcer版openvas公式

うごくようになるまでに試行錯誤したこと

とりあえず、openvasの管理画面からAlert項目にてAlertを追加。
taskに紐付けて実行するもメールは送信されない。
そんなときはお決まりのログチェック

にてログを監視していると、taskでメール送信のトリガ(スキャン完了など)を認識してメールを送信しようとしているログが出力されている。
つまり、openvas側の設定は問題ないことがわかった。
次にメールのログ確認をするが、残念ながらdockerのコンテナ内にはmaillogが存在しない。
メールキューになんかないかなと思い

コマンドで確認すると、送信がエラーになっているメールを発見。
ある程度予想はしていたが、送信で失敗していることを確認できた。

次にdockerのコンテナ内からどのようにメールを送信するのかわからなかったのでぐーぐる先生に質問。
いくつかの方法があったが現在のdockerの構成を考えると
「dockerホストにpostfixを入れて、dockerコンテナ内からはdockerホストにメールをリレーする」
方法が良さそうだったのでこちらを採用。

dockerのホストはubuntu18.04のため下記のコマンドでpostfixをインストール。
mailxコマンド使いたかったためこのコマンドにしています。

次に送信確認。

よし、メールが飛びました。

これで一旦はdockerホスト側の設定は終わりです。
※このあとセキュリティ対策としてローカル配送とdockerコンテナ内のメールのみを配送するように変更はしています。

では、コンテナ側のpostfixにてホスト側のpostfixにリレーする設定を入れます。
公式のREADME.mdに書いてあるとおり、
docker-compose.ymlに設定を追加

この状態でコンテナ内に入り、sendmailコマンドで送信テスト。
よし、メールが飛びました。

ここまでの段階でコンテナ内からホストのpostfixを経由してメールを飛ばすことはできました。

しかし、ここで問題が発生。
メールのFROMがコンテナのドメイン名になっている。
メールの送信先のSMTPが送信元のドメインがDNSで引けないと配送しない設定になっているため、このままではメール送信ができません。

そのため下記の記事を参考にホスト側のpostfixにてメールのFROMの強制的に書き換えを行います。

https://codeday.me/jp/qa/20181212/2330.html

書き換えを行い無事にメールが送信できました。
よきよき。

設定方法

下記の設定内容をまとめます。

今回学んだこと

・そもそもメール送信の仕組みが理解できていなかったことに気がつけた
・postfixでメールリレー設定方法
・postfixのローカル配送設定方法
・dockerコンテナのopenvasからメールを送るときに、openvas内でメールのFROMにするメールアドレスが実際に送信されるメールには反映されないこと
・メールヘッダのFROMのみ書き換えてるみたい
・sendmailコマンドやmailxコマンドによるメール送信方法

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です