Учим 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]

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

19 thoughts on “Учим Redmine рассылать почту через Gmail

  1. Vladimir Chernov

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

    Reply
  2. Adam

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

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

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

    Reply
    1. P.S. Post author

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

      Reply
  3. Никита

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

    Reply
  4. Никита

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

    Reply
    1. P.S. Post author

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

      Reply
  5. dropBox

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

    Reply
    1. P.S. Post author

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

      Reply
  6. Pingback: Ubuntu настройка уведомлений в Redmine | Electronic Information Technologies

  7. Александр Фукалов

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

    Reply
    1. P.S. Post author

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

      Reply
      1. Александр Фукалов

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

        Reply
  8. ББ

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

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *