メールの設定

最終更新: 2018/01/15 [原文]

設定ディレクティブ

このページは作業中であり、以下で紹介している設定ディレクティブは一部のもののみです。より詳しい情報は Action Mailer Configuration を参照してください。

authentication

送信に使用するメールサーバが要求する認証方法を指定します。

有効な設定:

  • nil (または入力を省略する)
  • :plain
  • :login
  • :cram_md5

Note

nil に設定した場合は user_nameおよびpassword` は設定しないでください。

delivery_method

メールの送信方法の指定です。

有効な設定:

  • :smtp
  • :async_smtp
  • :sendmail
  • :async_sendmail

非同期送信

:async_smtp:async_sendmail は非同期送信を行います。非同期送信の設定を行うと、Redmineはメールの送信完了を待つことなく次の画面を表示します。詳しくは Asynchronous Email Delivery をご覧ください。SMTPサーバによってはspam対策として処理開始前に待ち時間を設定している場合があり、非同期送信を設定していない場合はRedmineの処理も待たされてしまいます(10秒がよくある値です。詳しくは #11376 を参照してください)。

非同期送信を利用する場合は、SMTPの設定を指定するには smtp_settings ではなく async_smtp_settings を使用します:

development:
  email_delivery:
    delivery_method: :async_smtp
    async_smtp_settings:  # smtp_settings ではありません
      address: ...
      port: ...
    ...

configuration.ymlの設定例

LOGIN認証 (デフォルト)

# Outgoing email settings

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: smtp.example.net
      port: 25
      domain: example.net
      authentication: :login
      user_name: redmine@example.net
      password: redmine

development:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: 127.0.0.1
      port: 25
      domain: example.net
      authentication: :login
      user_name: redmine@example.net
      password: redmine

GMail, Google Apps

GMail/Google App やそのほかのTLSを要求するSMTPサーバを使用する場合は、TLS関係の設定を記述する必要があります:

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "smtp.gmail.com"
      port: 587
      domain: "smtp.gmail.com"
      authentication: :plain
      user_name: "your_email@gmail.com"
      password: "your_password"

G Suite (旧 Google Apps) を使用する場合、メール送信量の制限が緩和されている「SMTPリレー」を使った方がよいでしょう。SMTPリレーの詳細はGoogleのWebサイトを参照してください: https://support.google.com/a/answer/2956491

SMTPリレーサービスの設定例です。

  • Name: Redmine
    • 1 許可する送信者:
      • 「ドメイン内の登録済み Apps ユーザーのみ」 - Redmine専用の G Suite のユーザーを作成済みの場合
    • 2 認証:
      • [✓] 指定した IP アドレスからのみメールを受信する - RedmineサーバのIPアドレス
      • [✓] SMTP 認証を求める
    • 3 暗号化:
      • [✓] TLS 暗号化を必須とする

Redmineの設定はシンプルです。

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: smtp-relay.gmail.com
      port: 587
      domain: smtp-relay.gmail.com
      authentication: :plain
      user_name: your_email@gmail.com
      password: your_password

Office 365, Exchange Online

Office 365 (Exchange Online) での設定例です。送信者はOffice 365のアカウントが必要です。もしくは、共有メールボックスから送信する場合、下記のアカウント(Redmineの「管理」→「設定」→「メール通知」の「送信元メールアドレス」に設定されているもの)は、Office 365の「Send As」で認証されている必要があります。

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "smtp.office365.com"
      port: 587
      domain: "your_domain.com"
      authentication: :login
      user_name: "email@your_domain.com"
      password: "password"

認証無し

認証を使用しないSMTPサービスプロバイダを利用する場合の例です。

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: smtp.knology.net
      port: 25
      domain: cybersprocket.com

sendmailコマンドを利用

/usr/sbin/sendmail コマンドが利用できるUNIXシステムの例です。

production:
  email_delivery:
    delivery_method: :sendmail

トラブルシューティング

エラー: "hostname was not match with the server certificate"

メールのリレーサーバーのSSL証明書の確認で問題が発生していると考えられます。取り急ぎの対処として、対応する email_delivery セクションに以下の設定を追加してください。

    enable_starttls_auto: false

エラー: "Error: "Mail failure - no recipient addresses"

このエラーが発生したときは、メール通知は宛先のアドレスに届いていません。おそらくRedmineの「送信元メールアドレス」宛にエラーメールが届いていると思いますが、そのメールに書かれている元のメールのヘッダの情報を見ると、"From:"フィールドはあるのに"To:"フィールドが全く含まれないと思います。

このエラーはDebianでよく発生します。原因は、MTA「exim4」のデフォルトのオプションが -i -t であることです。この設定はメールの宛先をメッセージヘッダから読み取るよう指示するものです。Redmineにおいては宛先をコマンドラインから取得するよう指示する必要があります。

そのためには config/configuration.yml を編集して引数に "-i" のみを含むよう設定してください:

# default configuration options for all environments
default:
  email_delivery:
    delivery_method: :sendmail
    sendmail_settings:
      arguments: "-i"

上記の設定例は送信方法として :sendmail を指定しているため sendmail_settings の設定が使われています。もし :smtp または :async_smtp を指定している場合は :smtp_settings を使用してください。

エラー: "Timeout:Error" due to SSL SMTP server connection

ssl オプションを configuration.yml に追加してください(#17239)。

さらに詳しい情報