LoginSignup
1
0

More than 5 years have passed since last update.

taigaでgsuiteのsmtpリレーを利用しようとしてはまった(未解決)

Posted at

スクラム開発もどきをしているのだけど、これまで使ってたRedmineのBacklogsプラグインがいまいち使いづらかったのでtaigaに移行しようとしてはまっている話。

何を使うか

サーバ立てるのは面倒なのでdockerでどうにかしたい。
探すといろいろでてくるのだけど、公式ドキュメントに当ってみると、taigaはdockerをサポートしていないものの、いくつか紹介されているリポジトリがあったので、せっかくなので使ってみたかったdocker-composeの設定が入ってる

を選んでみる。

構築

$ git clone https://github.com/benhutchins/docker-taiga-example.git

して、手順に従って設定を修正。

taiga-conf/conf.jsonがtaiga-frontの設定。いくつか修正をいれる。(コメント参照)

taiga-conf/conf.json
{
    "api": "http://example.com/api/v1/", # 利用しているドメインに合わせて修正
    "eventsUrl": null,
    "eventsMaxMissedHeartbeats": 5,
    "eventsHeartbeatIntervalTime": 60000,
    "eventsReconnectTryInterval": 10000,
    "debug": true, # 転ばぬ先の
    "debugInfo": true, # 
    "defaultLanguage": "ja", # 日本人なので
    "themes": ["taiga"],
    "defaultTheme": "taiga",
    "publicRegisterEnabled": true, # オンラインサインアップしたいのでtrue
    "gravatar": true,
    "feedbackEnabled": false,
    "privacyPolicyUrl": null,
    "termsOfServiceUrl": null,
    "maxUploadFileSize": null,
    "contribPlugins": [
      "/plugins/slack/slack.json"
    ],
    "tribeHost": null,
    "importers": []
}

taiga-conf/local.pyはtaiga-backの設定。

taiga-conf/local.py
# Please modify this file as needed, see the local.py.example for details:
# https://github.com/taigaio/taiga-back/blob/master/settings/local.py.example
#
# Importing docker provides common settings, see:
# https://github.com/benhutchins/docker-taiga/blob/master/docker-settings.py
# https://github.com/taigaio/taiga-back/blob/master/settings/common.py
from .docker import *

PUBLIC_REGISTER_ENABLED = True # オンラインサインアップしたいのでtrueに
DEBUG = True # 転ばぬ先の杖
TEMPLATE_DEBUG = False

## Slack
# https://github.com/taigaio/taiga-contrib-slack
INSTALLED_APPS += ["taiga_contrib_slack"]

## LDAP
# see https://github.com/ensky/taiga-contrib-ldap-auth
# INSTALLED_APPS += ["taiga_contrib_ldap_auth"]

## For additional configuration options, look at:
# https://github.com/taigaio/taiga-back/blob/master/settings/local.py.example

で、docker-compose.ymlでメールの設定、SSLの設定ができる。今回はSSL対応は見送るので、メールの設定だけ。
メールはしがらみによりgsuiteのsmtpリレーを利用。

docker-compose.yml
...
     # Hostname for your instance of Taiga. Required.
      TAIGA_HOSTNAME: example.com # 利用しているドメインに合わせて修正
...
      # Enable SSL externally, preferred method
      #TAIGA_SSL_BY_REVERSE_PROXY: 'True'
      # To use an external SMTP for emails, fill in these values:
      TAIGA_ENABLE_EMAIL: "True" # gsuiteのsmtpリレーを利用したいのでtrueに
      TAIGA_EMAIL_FROM: taiga@example.com  # 通知メールの送信元
      TAIGA_EMAIL_USE_TLS: "True" # 認証あり
      TAIGA_EMAIL_HOST: smtp-relay.gmail.com # gsuiteのsmtpリレーの設定ガイドに従う
      TAIGA_EMAIL_PORT: 465 # gsuiteのsmtpリレーの設定ガイドに従う
      TAIGA_EMAIL_USER: aiga@example.com  # smtp認証のユーザ
      TAIGA_EMAIL_PASS: 'password' # smtp認証のユーザのパスワード
...

設定変更後、

$ docker-compose up -d

とすると1分程度でtaigaが立ち上がる。

エラー

一通り操作はできたものの、メールの送信だけ以下のエラー。

 9月 06 20:06:33 server_name dockerd-current[11494]: ERROR:2018-09-06 11:06:33,146: Internal Server Error: /api/v1/auth/register
 9月 06 20:06:33 server_name dockerd-current[11494]: Traceback (most recent call last):
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner
 9月 06 20:06:33 server_name dockerd-current[11494]:     response = get_response(request)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response
 9月 06 20:06:33 server_name dockerd-current[11494]:     response = self._get_response(request)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
 9月 06 20:06:33 server_name dockerd-current[11494]:     response = self.process_exception_by_middleware(e, request)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
 9月 06 20:06:33 server_name dockerd-current[11494]:     response = wrapped_callback(request, *callback_args, **callback_kwargs)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/src/taiga-back/taiga/base/api/viewsets.py", line 106, in view
 9月 06 20:06:33 server_name dockerd-current[11494]:     return self.dispatch(request, *args, **kwargs)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
 9月 06 20:06:33 server_name dockerd-current[11494]:     return view_func(*args, **kwargs)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/src/taiga-back/taiga/base/api/views.py", line 461, in dispatch
 9月 06 20:06:33 server_name dockerd-current[11494]:     response = self.handle_exception(exc)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/src/taiga-back/taiga/base/api/views.py", line 458, in dispatch
 9月 06 20:06:33 server_name dockerd-current[11494]:     response = handler(request, *args, **kwargs)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/src/taiga-back/taiga/auth/api.py", line 98, in register
 9月 06 20:06:33 server_name dockerd-current[11494]:     return self._public_register(request)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/src/taiga-back/taiga/auth/api.py", line 78, in _public_register
 9月 06 20:06:33 server_name dockerd-current[11494]:     user = public_register(**data)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/contextlib.py", line 30, in inner
 9月 06 20:06:33 server_name dockerd-current[11494]:     return func(*args, **kwds)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/src/taiga-back/taiga/auth/services.py", line 125, in public_register
 9月 06 20:06:33 server_name dockerd-current[11494]:     send_register_email(user)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/src/taiga-back/taiga/auth/services.py", line 63, in send_register_email
 9月 06 20:06:33 server_name dockerd-current[11494]:     return bool(email.send())
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/site-packages/django/core/mail/message.py", line 342, in send
 9月 06 20:06:33 server_name dockerd-current[11494]:     return self.get_connection(fail_silently).send_messages([self])
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/site-packages/django/core/mail/backends/smtp.py", line 100, in send_messages
 9月 06 20:06:33 server_name dockerd-current[11494]:     new_conn_created = self.open()
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/site-packages/django/core/mail/backends/smtp.py", line 58, in open
 9月 06 20:06:33 server_name dockerd-current[11494]:     self.connection = connection_class(self.host, self.port, **connection_params)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/smtplib.py", line 251, in __init__
 9月 06 20:06:33 server_name dockerd-current[11494]:     (code, msg) = self.connect(host, port)
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/smtplib.py", line 338, in connect
 9月 06 20:06:33 server_name dockerd-current[11494]:     (code, msg) = self.getreply()
 9月 06 20:06:33 server_name dockerd-current[11494]:   File "/usr/local/lib/python3.5/smtplib.py", line 394, in getreply
 9月 06 20:06:33 server_name dockerd-current[11494]:     raise SMTPServerDisconnected("Connection unexpectedly closed")
 9月 06 20:06:33 server_name dockerd-current[11494]: smtplib.SMTPServerDisconnected: Connection unexpectedly closed

問題の切り分けのため、dockerコンテナ内から

に載ってるソースを使ってメールを投げてみると成功する。
ここで一つ勘違いをして、このソースだとポート指定していない -> 25使ってるんじゃない?と思い、docker-compose.yamlで25を指定してみる。
smtplib.SMTP_SSL の場合省略時は465なので勘違いなのだけど、何故かこれでメールが届くようになってしまった。なぜ。

$ docker exec f2ce38f404db env | grep TAIGA_EMAIL_PORT
TAIGA_EMAIL_PORT=25

いちおうポートが設定されているかも確認。されている。
とりあえず動いているのでこのままほうっておきつつ継続調査。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0