Письмо, отправленное ActionMailer, занимает шесть часов, чтобы доставить почту - PullRequest
0 голосов
/ 26 марта 2010

Поэтому меня попросили помочь поддерживать сайт, который использует Ruby on Rails. Теперь позвольте мне сказать, что я некоторое время программировал на Ruby, но я все еще новичок в Rails. Первая проблема, на которую я обратил внимание, заключается в том, что для активации электронного письма требуется около шести часов. Было бы одно, если бы электронное письмо не отправлялось из-за ошибок, но оно отправлялось правильно, просто медленно. Кроме того, сервер, на котором он работает, также является собственным SMTP. Я проверил, как электронная почта форматировалась перед вызовом метода setup_email, и все выглядит хорошо. Я даже копался в библиотеке ActionMailer, читал там файлы и не видел ничего необычного. Так что, скорее всего, приводит к тому, что доставка электронной почты занимает шесть часов?

Edit: Я попробовал идею Roadmaster и заметил что-то странное. Хотя обычная отправка электронной почты, как представляется, имеет обычные задержки, как записано в журналах (например, «задержка = 0,99, задержки = 0,08 / 0,01 / 0,19 / 0,7»), я заметил несколько попыток отправить электронную почту на blah@blah.com , Все они различаются, так как не могут найти такого хоста. Но связанные с ними задержки гораздо больше (например, «delay = 239853, задержки = 239818 / 0,02 / 35/0»). Теперь это звучит для меня скорее как проблема в коде Rails, а не как проблема конфигурации sendmail, но я только начал поддерживать этот сайт. Где было бы вероятное место, чтобы начать искать?

1 Ответ

1 голос
/ 27 марта 2010

Можете ли вы получить доступ к почтовым журналам сервера? они могут быть в / var / log, если это сервер Unix. Вы можете найти ключ к пониманию того, что происходит. Вот что я бы сделал:

  1. найти журнал сервера SMTP (sendmail, exim, postfix и т. Д.).
  2. Используйте tail -f what.log, чтобы следить за журналом. Оставьте это работающим в терминале.
  3. Зайдите в свое приложение и выполните любые действия, необходимые для запуска отправки электронного письма активации.
  4. Проверьте окно, где вы смотрите журнал, чтобы увидеть, что происходит.

ActionMailer per se не должно приводить к такой большой задержке (хотя при доставке почты это не демон скорости, он все равно должен обрабатывать все в течение менее 1-2 секунд), поэтому это может другая часть вашего стека или даже проблема / фильтр / серый список на стороне получателя.

...