6.Dovecotを使ったSMTP-Auth(外出時もメールの送信)

1.Postfixを使ってSMTPサーバの構築5.Postfixを使ってSMTPサーバを暗号化する(クライアントとして)の設定をしたことで家からメールの送信をすることが出来る様になりました。
が、外出先でメールの送信をすることができません。

 なぜなら「mynetwork」で設定したネットワーク(ローカルネットワーク)内からであれば送信できる。という設定にしたからです。

 という事は「mynetwork」の設定を0.0.0.0とすれば、どんなグローバルIPからでも送信が可能になるので外出先からでもメール送信ができるようになるが、そんなことしたら自分だけが送信できるわけではなく、世界のだれでも私のメールサーバを使って送信できるようになってしまい私のサーバが踏み台にされて大変なことになっちゃいます。

 そこで、SMTP-Authで認証を通過すればローカルネットワーク外からでも送受信できるようにする。という設定にしましょう。
 ここではDovecotの認証を通過したらPostfixでメール送信できるようにする設定(Dovecot-SASL)を説明していきます。

目次
 Postfix側の設定
 main.cfの設定
  smtpd_sasl_auth_enable
  smtpd_sasl_security_options
  smtpd_sasl_local_domain
  smtpd_sasl_type
  smtpd_sasl_path

 Dovecot側の設定
 10-master.conf
  unix_listener

 10-auth.conf
  include

Postfix側の設定

main.cfの設定

smtpd_sasl_auth_enable  新規追加

SMTPサーバのSASL認証設定
Postfix SMTP サーバの SASL 認証を設定します。
デフォルトでは、Postfix SMTP サーバは認証を使いません(smtpd_sasl_auth_enable = no)。
ここではSASLの設定を有効にするので「yes」を設定します。

smtpd_sasl_auth_enable = yes

smtpd_sasl_security_options  新規追加

クライアントに対しての認証メカニズムの制御設定
Postfix SMTPサーバがクライアントに提供する認証メカニズムの制限を行います。
デフォルトでは、匿名ログインを許可しない設定になっています。(smtpd_sasl_security_options = noanonymous)
(クライアントに提供する認証メカニズムの制御。とうたっているがSMTP同士のやり取りは含まれません。)
ここでは匿名ログインを許可しない設定を行います。
デフォルトの設定と同様ですが、明示的に記載しておきます。

smtpd_sasl_security_options = noanonymous

smtpd_sasl_local_domain  新規追加

認証に使用するドメインの範囲
多分SASL認証を使用するドメインの指定を行うものと思われる。
デフォルトでは、$mydomainを設定しています。
ここで設定しているメールサーバは、管理者のみが使っているメールサーバでメールドメインにホスト名も入れずに「@caramelsauce.info」のみで使っているので
ホスト名は必要ない。よってデフォルトの設定同様 変数の「$mydomain」を設定となりますが、明示的に記載しておきます。

smtpd_sasl_local_domain = $mydomain

smtpd_sasl_type  新規追加

Postfix SMTPサーバが認証に使うSASLプラグインの種類指定
デフォルトではcyrusを使う設定になっているようです。
ここではdovecotを使ったSASLの設定を行うので「dovecot」を設定。

smtpd_sasl_type = dovecot

smtpd_sasl_path  新規追加

smtpd_sasl_typeで定義したプラグインに渡す実装固有の情報
英語が分からなくて翻訳してみたけど意味が解らない・・・
postfixのキューディレクトリ(/var/spool/postfix)の認証パスを相対パスで設定するらしい?
そこからの相対パス「private/auth」を設定する。
デフォルト設定も同様らしいが、明示的に記載しておく。

smtpd_sasl_path = private/auth

Dovecot側の設定

10-master.conf

unix_listener  107行目~

Dovecotを使ったSMTP-Authを使用する場合に有効にする
コメントアウト部分を削除して有効化します。
また、よく分からないんだけどRedHatのサイトとかを見るとmodeが「0660」、更にuserやgroupを追加して設定と記載されている。
となっているのでコメントアウトを外してちょっと修正します。

# Postfix smtp-auth
#unix_listener /var/spool/postfix/private/auth {
#  mode = 0666
#}

  ↓ ↓ ↓ ↓ ↓

# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0660
  user = postfix
  group = postfix
}

10-auth.conf

include  行の最後の方 (デフォルト設定のままでよいが説明の為記載)

Dovecotの認証に使用しているアカウント情報の設定
ここではOSのシステムユーザを使用して認証を行うので「!include auth-system.conf.ext」がコメントアウトされていないことを確認します。(デフォルト設定のまま)

!include auth-system.conf.ext
#!include auth-sql.conf.ext
#!include auth-ldap.conf.ext
#!include auth-passwdfile.conf.ext
#!include auth-checkpassword.conf.ext
#!include auth-static.conf.ext

設定が終わったらDovecotをリロードしましょう。

systemctl reload dovecot