Блог - Linux, программирование, Я!

ПрограммированиеУчим Redmine рассылать почту через Gmail

Проблема в том, что если настроить уведомления по email через smtp стандартным методом:

# File: config/email.yml
production:
  delivery_method: :smtp
  smtp_settings:
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication: :plain
    user_name: "your_email@gmail.com"
    password: "your_password"

То при попытке отправить пробный email http://redmine.example.com/admin/test_email, он выдает ошибку
Во время отправки письма произошла ошибка (530 5.7.0 Must issue a STARTTLS command first. 16sm1075274ewy.14 )
Причиной тому служит обязательное использование TLS шифрования при работе с почтовым сервером Gmail, которое Redmine из коробки не поддерживает.
Добавить такой функционал несложно...
Для начала установим плагин action_mailer_optional_tls
Если у вас установлен GIT, то просто в папке с установленным redmine выполняете команду

[codesyntax lang="bash"]ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git[/codesyntax]

Иначе переходите на сайт http://github.com/collectiveidea/action_mailer_optional_tls , щелкаете Download source и распаковываете архив в vendor/plugins/ (чтобы получилась папка vendor/plugins/action_mailer_optional_tls с файлами init.rb и т.п.)

Приводите конфиг к виду

# File: config/email.yml
production:
  delivery_method: :smtp
  smtp_settings:
    address: "smtp.gmail.com"
    port: '587'
    domain: "gmail.com"
    authentication: :plain
    user_name: "your_email@gmail.com"
    password: "your_password"
    
tls: true

Или, если пользуетесь службой Google apps для вашего домена example.com, то

# File: config/email.yml
production:
  delivery_method: :smtp
  smtp_settings:
    address: "smtp.gmail.com"
    port: '587'
    domain: "
example.com"
    authentication: :plain
    user_name: "your_email@
example.com"
    password: "your_password"
    
tls: true

Перезапускаете сервер, например так (смотря как вы настраивали):

[codesyntax lang="bash"]sudo service mongrel_cluster restart[/codesyntax]

И пользуетесь!

  1. 2010-02-08 17:40:58 | #

    Спасибо, статья очень помогла 🙂

  2. Claus
    2010-02-16 07:53:20 | #

    Огромное спасибо! Помогло

  3. 2010-11-23 06:25:46 | #

    Огромное спасибо.
    А то буржуины, написали как ставить через GIT. А у меня оно не стояло..
    Еще раз спасибо.

  4. Mirocow
    2010-12-19 03:51:25 | #

    Спасибо. то что надо.

  5. 2011-01-06 18:14:34 | #

    Автор в поряде пацан.

  6. Jan
    2011-01-09 21:36:23 | #

    Thanks! Exactly what I needed.

  7. Adam
    2011-07-09 09:25:07 | #

    Здравствуйте,
    перепробовал все возможные варианты описанные как на русскоязычных ресурсах, так и западных, ошибка:

    «Во время отправки письма произошла ошибка (Connection refused — connect(2))»

    В джимайле включил IMAP. Что еще нужно сделать?

    • 2011-07-20 03:10:13 | #

      Не сталкивался с такой проблемой… А можете ваш конфиг показать?

  8. 2011-08-20 17:36:25 | #

    Спасибо, помогло!

  9. 2011-10-28 13:08:15 | #

    Добрый день.
    У меня вопрос.
    Я изменил файл email.yml под gmail. Затем перезапускаю redmine. Захожу в администрирование, настройки, уведомления по email. Ввожу адрес для передачи информации (тот самый, что указал в email.yml), сохраняю. Захожу под пользователем и тыкаю галочку присылать уведомления (все).
    В итоге мне ничего не приходит, в чём проблема?

  10. 2011-10-28 13:59:23 | #

    Во время отправки тестового сообщения выпадает:
    «Во время отправки письма произошла ошибка (getaddrinfo: Name or service not known)»

    • 2011-11-16 14:05:55 | #

      По-идее такое сообщение означает, что не удалось получить информацию из DNS об IP адресе smtp.gmail.com. Для проверки можете от имени юзера ( sudo su <username>), под которым запущен Redmine выполнить команду nslookup smtp.gmail.com. Если она вернет нормальный IP адрес, то нужно дальше разбираться, если нет — то вот есть похожий вопрос на форуме Redmine.

  11. dropBox
    2012-04-04 14:07:55 | #

    спасибо за статью!
    коротко и понятно.
    все работает.
    не сразу понял, что надо httpd перезагрузить, чтобы заработало

    • 2012-04-04 15:36:37 | #

      Зависит от того, как у вас настроено. Кто-то через mongrel настраивает, кто-то через unicorn кто-то через Apache. Обновления кода обычно без перезапуска не подхватываются.

  12. 2013-12-09 16:41:22 | #

    Спасибо за полезную инструкцию. Ею интересуются люди так или иначе связанные с Redmine, а значит всем им может пригодиться наша разработка. Мы создали простой таймер RMClient для учета времени в Redmine. Программа удобна и функциональна. Мы используем этот таймер в собственной компании, что позволило существенно упростить работу с Redmine и оптимизировать работу команды. Предлагаю всем желающим ее протестировать и если понравиться будем рады новым пользователям!

    • 2013-12-09 17:34:33 | #

      Второй раз уже с этой штукой тут отметились. Ну ладно, пусть будет.

      • 2013-12-10 14:11:30 | #

        Спасибо за понимание. Довольно сложно искать аудиторию для нашего приложения и приходится оставлять подобные сообщения в популярных блогах, ведь где еще как не тут можно найти наиболее заинтересованных пользователей.

  13. ББ
    2014-06-18 11:05:53 | #

    Добрый день!
    У меня версия redmine-2.3.2-0, но никак не могу найти файл config/email.yml.