質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.62%

Mastodonにてpostfixを利用したメール送信が出来ません

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,373

RhymeLight

score 12

前提・実現したいこと

現在、Mastodonを構築中です。
先程、postfixについてご質問した後でございますが質問させて頂きます。
マストドンにメールを送らせようしましたが、失敗します。

発生している問題・エラーメッセージ

Sidekiq画面にて

Net::SMTPFatalError: 550 5.7.1 Relaying denied 

.env.production

編集した部分です

~省略~
# E-mail configuration
# Note: Mailgun and SparkPost (https://sparkpo.st/smtp) each have good free tiers
# If you want to use an SMTP server without authentication (e.g local Postfix relay)
# then set SMTP_AUTH_METHOD to 'none' and *comment* SMTP_LOGIN and SMTP_PASSWORD.
# Leaving them blank is not enough for authentication method 'none'.
SMTP_SERVER=tk2-230-24926.vs.sakura.ne.jp
SMTP_PORT=25
SMTP_LOGIN=
SMTP_PASSWORD=
SMTP_FROM_ADDRESS=root@utbs.info
#SMTP_DOMAIN= # defaults to LOCAL_DOMAIN
SMTP_DELIVERY_METHOD=smtp # delivery method can also be sendmail
SMTP_AUTH_METHOD=plain
SMTP_OPENSSL_VERIFY_MODE=none
SMTP_ENABLE_STARTTLS_AUTO=true
~省略~

config/environments/production.rb

Rails.application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # Code is not reloaded between requests.
  config.cache_classes = true

  # Eager load code on boot. This eager loads most of Rails and
  # your application in memory, allowing both threaded web servers
  # and those relying on copy on write to perform better.
  # Rake tasks automatically ignore this option for performance.
  config.eager_load = true

  # Full error reports are disabled and caching is turned on.
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true
  config.action_controller.asset_host      = ENV['CDN_HOST'] if ENV.key?('CDN_HOST')

  # Disable serving static files from the `/public` folder by default since
  # Apache or NGINX already handles this.
  config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

  # Compress JavaScripts and CSS.
  config.assets.js_compressor = Uglifier.new(mangle: false)
  # config.assets.css_compressor = :sass

  # Do not fallback to assets pipeline if a precompiled asset is missed.
  config.assets.compile = false

  # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb

  # Specifies the header that your server uses for sending files.
  # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
  config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX

  # Allow to specify public IP of reverse proxy if it's needed
  config.action_dispatch.trusted_proxies = [IPAddr.new(ENV['TRUSTED_PROXY_IP'])] unless ENV['TRUSTED_PROXY_IP'].blank?

  # By default, use the lowest log level to ensure availability of diagnostic information
  # when problems arise.
  config.log_level = ENV.fetch('RAILS_LOG_LEVEL', 'info').to_sym

  # Prepend all log lines with the following tags.
  config.log_tags = [:request_id]

  # Use a different logger for distributed setups.
  # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)

  # Parse and split the REDIS_URL if passed (used with hosting platforms such as Heroku).
  # Set ENV variables because they are used elsewhere.
  if ENV['REDIS_URL']
    redis_url = URI.parse(ENV['REDIS_URL'])
    ENV['REDIS_HOST'] = redis_url.host
    ENV['REDIS_PORT'] = redis_url.port.to_s
    ENV['REDIS_PASSWORD'] = redis_url.password
    db_num = redis_url.path[1..-1]
    ENV['REDIS_DB'] = db_num if db_num.present?
  end

  # Use a different cache store in production.
  config.cache_store = :redis_store, {
    host: ENV.fetch('REDIS_HOST') { 'localhost' },
    port: ENV.fetch('REDIS_PORT') { 6379 },
    password: ENV.fetch('REDIS_PASSWORD') { false },
    db: ENV.fetch('REDIS_DB') { 0 },
    namespace: 'cache',
    expires_in: 10.minutes,
  }

  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
  # config.action_controller.asset_host = 'http://assets.example.com'

  # Ignore bad email addresses and do not raise email delivery errors.
  # Set this to true and configure the email server for immediate delivery to raise delivery errors.
  # config.action_mailer.raise_delivery_errors = false

  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
  # the I18n.default_locale when a translation cannot be found).
  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify

  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

  # Better log formatting
  config.lograge.enabled = true

  # Do not dump schema after migrations.
  config.active_record.dump_schema_after_migration = false

  config.action_mailer.perform_caching = false

  # E-mails
  config.action_mailer.smtp_settings = {
    :port                 => ENV['SMTP_PORT'],
    :address              => ENV['SMTP_SERVER'],
 #   :user_name            => ENV['SMTP_LOGIN'].presence,
 #   :password             => ENV['SMTP_PASSWORD'].presence,
    :domain               => ENV['SMTP_DOMAIN'] || ENV['LOCAL_DOMAIN'],
    :authentication       => ENV['SMTP_AUTH_METHOD'] == 'none' ? nil : ENV['SMTP_AUTH_METHOD'] || :plain,
    :openssl_verify_mode  => ENV['SMTP_OPENSSL_VERIFY_MODE'],
    :enable_starttls_auto => ENV['SMTP_ENABLE_STARTTLS_AUTO'] || true,
  }

  config.action_mailer.delivery_method = ENV.fetch('SMTP_DELIVERY_METHOD', 'smtp').to_sym

  config.react.variant = :production

  config.to_prepare do
    StatsD.backend = StatsD::Instrument::Backends::NullBackend.new if ENV['STATSD_ADDR'].blank?
    Sidekiq::Logging.logger.level = Logger::WARN
  end

  config.action_dispatch.default_headers = {
    'Server'                 => 'Mastodon',
    'X-Frame-Options'        => 'DENY',
    'X-Content-Type-Options' => 'nosniff',
    'X-XSS-Protection'       => '1; mode=block',
  }
end

試したこと

下記のサイトを参考にしました
http://qiita.com/ymchn/items/1df8453fd2c8ceb8ad71
http://scriptlife.hacca.jp/contents/programming/2017/04/26/post-2278/

補足情報(言語/FW/ツール等のバージョンなど)

CentOS7
postfix
Mastodon

追記

postfixの設定を見直しを行った所

[root@tk2-230-24926 mastodon]# systemctl status postfix.service

● postfix.service - Postfix Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/postfix.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 水 2017-05-24 21:28:42 JST; 26s ago
  Process: 28007 ExecStop=/usr/sbin/postfix stop (code=exited, status=1/FAILURE)
  Process: 28281 ExecStart=/usr/sbin/postfix start (code=exited, status=1/FAILURE)
  Process: 28279 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
  Process: 28275 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
 Main PID: 23625 (code=killed, signal=TERM)

 524 21:28:40 tk2-230-24926.vs.sakura.ne.jp systemd[1]: Starting Postfix Mail Transport Agent...
 524 21:28:40 tk2-230-24926.vs.sakura.ne.jp postfix/postfix-script[28351]: starting the Postfix mail system
 524 21:28:40 tk2-230-24926.vs.sakura.ne.jp postfix/master[28353]: fatal: open lock file /var/lib/postfix/master.lock: unable to set exclusive lock: Resource temporarily unavailable
 524 21:28:41 tk2-230-24926.vs.sakura.ne.jp postfix/master[28352]: fatal: daemon initialization failure
 524 21:28:42 tk2-230-24926.vs.sakura.ne.jp postfix/postfix-script[28354]: fatal: mail system startup failed
 524 21:28:42 tk2-230-24926.vs.sakura.ne.jp systemd[1]: postfix.service: control process exited, code=exited status=1
 524 21:28:42 tk2-230-24926.vs.sakura.ne.jp systemd[1]: Failed to start Postfix Mail Transport Agent.
 524 21:28:42 tk2-230-24926.vs.sakura.ne.jp systemd[1]: Unit postfix.service entered failed state.
 524 21:28:42 tk2-230-24926.vs.sakura.ne.jp systemd[1]: postfix.service failed.
[root@tk2-230-24926 mastodon]# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 10485760
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = utbs.info
myhostname = tk2-230-24926.vs.sakura.ne.jp
mynetworks = tk2-230-24926.vs.sakura.ne.jp
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
relayhost = $mydomain
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
unknown_local_recipient_reject_code = 550
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

tk2-230-24926.vs.sakura.ne.jp が postfix で、25番ポートで認証なしでメールを送信したいのですよね?

550 5.7.1 Relaying denied

postfix で Mastodon ホストからのリレーが許可されていないようです。
postfix の main.cf の設定で、mynetworks に Mastodon の IPアドレスを追加する必要があります。
もし、postfix が Mastodon と同じホストならば、SMTP_SERVER=localhost または SMTP_SERVER=127.0.0.1 に変更するといいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/24 23:59

    mynetworksの変更を行いました。
    Sidekiq上のエラーがなくなりました・・・がメールが届いてないようです。

    maillog上にて
    May 24 23:53:51 tk2-230-24926 postfix/smtpd[4981]: connect from unknown[172.18.0.6]
    May 24 23:53:51 tk2-230-24926 postfix/smtpd[4981]: 3260FC00578F: client=unknown[172.18.0.6]
    May 24 23:53:51 tk2-230-24926 postfix/cleanup[4984]: 3260FC00578F: message-id=<59259e7f2e5e5_13fd902260ff0477b3@668534bd7d80.mail>
    May 24 23:53:51 tk2-230-24926 postfix/smtpd[4981]: disconnect from unknown[172.18.0.6]
    May 24 23:53:51 tk2-230-24926 postfix/qmgr[4966]: 3260FC00578F: from=<root@utbs.info>, size=2576, nrcpt=1 (queue active)
    May 24 23:53:51 tk2-230-24926 postfix/smtp[4985]: warning: relayhost configuration problem
    May 24 23:53:51 tk2-230-24926 postfix/smtp[4985]: 3260FC00578F: to=<rhyme_light_mood@yahoo.co.jp>, relay=none, delay=0.02, delays=0.01/0/0.01/0, dsn=4.3.5, status=deferred (mail for utbs.info loops back to myself)

    キャンセル

  • 2017/05/25 00:19

    リレーは許可されて、メールキューに溜まっているものと思われます。
    「relayhost = $mydomain」で、$mydomain が自ホストなので、ループして外部にメールを送れません。
    relayhost 設定を削除して、DNS MX宛に送るようにするといいと思います。

    キャンセル

  • 2017/05/25 00:39

    relayhost = $mydomainを削除した所、正常にメールが送信されることを確認しました。

    長時間に渡り、お付き合い頂きありがとうございました。

    キャンセル

0

不正が疑われる送信というか転送(リレー)を破棄していますね。

/etc/mail/access ファイルの設定の問題かと思われます。

Connect:localhost.localdomain RELAY
Connect:127.0.0.1 RELAY


と書けば、サーバ内でのリレーが可能になる筈ですので、
一度上記ファイルを確認してみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/24 19:10

    確認してみた所、sendmailがインストールされておらず、新規にインストールを行いました

    # Check the /usr/share/doc/sendmail/README.cf file for a description
    # of the format of this file. (search for access_db in that file)
    # The /usr/share/doc/sendmail/README.cf is part of the sendmail-doc
    # package.
    #
    # If you want to use AuthInfo with "M:PLAIN LOGIN", make sure to have the
    # cyrus-sasl-plain package installed.
    #
    # By default we allow relaying from localhost...
    Connect:localhost.localdomain RELAY
    Connect:localhost RELAY
    Connect:127.0.0.1 RELAY

    となっておりました

    キャンセル

  • 2017/05/24 19:29

    再度、Sidekiqを確認して見たところ、

    RuntimeError: Invalid delivery method :"smtp # delivery method can also be sendmail"
    となっておりました

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.62%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る