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

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

ただいまの
回答率

90.45%

  • CentOS

    3219questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • GitLab

    163questions

    GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

  • SMTP

    119questions

    SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。

GitLabから外部SMTPメールが送れない(届かない)

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 3,124

amu0x

score 3

 前提・実現したいこと

社内ローカルのバージョン管理システムの構築のため、CentOS7にomunibusパッケージでGitLabをインストールしました。
GitLabからの通知メールを会社の外メール用SMTPサーバーを使って送信したく、設定を試行しています。

・送信だけできれば良いです。
・SMTPサーバーは社内にありますが、管理者が別なので制限設定やログ等は確認できませんが、GmailやK9Mail等でも利用できています。
・Linux初心者につき、Web検索しつつ手当たり次第試している状況です。

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

GitLabのブラウザ画面で、新規ユーザー登録をしたり、管理者のメールアドレスを再設定したりしていますが、メールが送られません。

/etc/gitlab/gitlab.rb

gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'hoge@hoge.co.jp'
gitlab_rails['gitlab_email_display_name'] = 'GitLab'

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "mail.hoge.co.jp"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "hoge@hoge.co.jp"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_domain'] = "hoge.co.jp"
gitlab_rails['smtp_authentication'] = "plain"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = false

gitlab_rails['smtp_openssl_verify_mode'] = 'none'

ログの見方も覚束ない感じで申し訳ないのですが、production.logというファイルには、以下のようなログが残っていました。
"authenticity_token"=>"[FILTERED]"で認証に失敗しているようですが、何故失敗しているのか…filteredをfaultedと見間違えました…

production.log

[ActiveJob] [ActionMailer::DeliveryJob] [59586f09-0b59-4a46-805a-a26dde98b32d] Performed ActionMailer::DeliveryJob from Sidekiq(mailers) in 540.03ms
Started POST "/users/confirmation" for xxx.xxx.xxx.xxx at 2018-03-07 16:37:30 +0900
Processing by ConfirmationsController#create as HTML
Parameters: {"utf8"=>"?", "authenticity_token"=>"[FILTERED]", "user"=>{"email"=>"hoge@hoge.co.jp"}}
[ActiveJob] Enqueued ActionMailer::DeliveryJob (Job ID: 5d55d39b-f826-444f-886b-b3f5d7eda0ba) to Sidekiq(mailers) with arguments: "DeviseMailer", "confirmation_instructions", "deliver_now", gid://gitlab/User/1, "[暗号化文字列?]", {:to=>"hoge@hoge.co.jp"}
Redirected to http://xxx.xxx.xxx.xxx/users/almost_there
Completed 302 Found in 50ms (ActiveRecord: 9.3ms)
[ActiveJob] [ActionMailer::DeliveryJob] [5d55d39b-f826-444f-886b-b3f5d7eda0ba] Performing ActionMailer::DeliveryJob from Sidekiq(mailers) with arguments: "DeviseMailer", "confirmation_instructions", "deliver_now", gid://gitlab/User/1, "[暗号化文字列?]", {:to=>"hoge@hoge.co.jp"}
Started GET "/users/almost_there" for xxx.xxx.xxx.xxx at 2018-03-07 16:37:30 +0900
Processing by ConfirmationsController#almost_there as HTML
Completed 200 OK in 58ms (Views: 21.6ms | ActiveRecord: 12.9ms)
[ActiveJob] [ActionMailer::DeliveryJob] [5d55d39b-f826-444f-886b-b3f5d7eda0ba]
Sent mail to hoge@hoge.co.jp (308.2ms)

 試したこと

よくわかっていないまま、Web情報頼りに、最初はsendmailを設定していましたが、うまくいかずアンインストールしました。
次にpostfixを試していましたが、送信だけでも正引きできるドメインが必要とのことで、取得の予定がないので断念して、アンインストールしました。
次にGitLabの設定のみで外部SMTPサーバーが利用できるとのことで設定を行ってみましたが、これもうまくいっていない、というのが今の状況です。

3/8 追記
firewallをstop,disableして、rebootしました。
GMailアカウントを作って試してみましたが、こちらも送られませんでした。

gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'hoge@gmail.com'
gitlab_rails['gitlab_email_display_name'] = 'GitLab@hogehost'
gitlab_rails['gitlab_email_reply_to'] = 'hoge@gmail.com'

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "hoge.gmail.com"
gitlab_rails['smtp_password'] = "password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false


3/8追記2
切り分けに役立つ情報を得られないかと思い、再度postfixをインストールして、コンソールからメールの送信テストを行ってみたところ、この場合は送られました。
hoge.co.jpは会社のドメインで、送信元はroot@hoge.co.jpという存在しないアドレスで届いていました。
ただこの状態でも、やはりGitLabのブラウザ画面でユーザー登録やパスワード忘れの操作をしても、メールが送られません。

/etc/postfix/main.cf

myhostname = hoge.co.jp
mydomain = hoge.co.jp
myorigin = $mydomain
append_at_myorigin = yes
append_dot_mydomain = yes
inet_interfaces = localhost
inet_protocols = ipv4
mydestination = localhost
mynetworks = 127.0.0.1


mail -s "テストメールです。" amu0x@hoge.co.jp
これは届きます。
.
EOT


3/8追記3
postfixをアンインストールしました。
外部SMTPを使う際はproduction.rbに設定をする、という記事を見つけたので、gitlab.rbの内容と同じように記述しましたが、現状変わらずでした。

/opt/gitlab/embedded/service/gitlab-rails/config/environments/production.rb

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :address => "mail.hoge.co.jp",
    :port => "587",
    :domain => "hoge.co.jp",
    :authentication => :plain,
    :user_name => "hoge@hoge.co.jp",
    :password => "password",
    :enable_starttls_auto => false


linuxで外部smtp経由でメールを送る方法を検索して見つけた方法を試しました。

/root/.mailrb

set smtp=smtp://mail.hoge.co.jp:587
set smtp-auth=plain
set smtp-auth-user=hoge@hoge.co.jp
set smtp-auth-password=password
set from=hoge@hoge.co.jp


これでmailコマンドを打つと、次のログが流れて、ちゃんとメールが届きました。

mail -v "テストメール" amu0x@hoge.co.jp
テストメール contains invalid character '\343'
Subject: これは届きます
これは届きますよ
.
EOT
Resolving host mail.hoge.co.jp . . . done.
Connecting to xxx.xxx.xxx.xxx:587 . . . connected.
220 mail.hoge.co.jp ESMTP
>>> EHLO hostname
250-mail.hoge.co.jp
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
>>> AUTH PLAIN
334
>>> [暗号化文字列?]
235 ok, go ahead (#2.0.0)
>>> MAIL FROM:<hoge@hoge.co.jp>
250 ok
>>> RCPT TO:<amu0x@hoge.co.jp>
250 ok
>>> DATA
354 go ahead
>>> .
250 ok 1520508525 qp 15486
>>> QUIT
221 mail.hoge.co.jp

その都度、GitLabのブラウザから新規ユーザーを作成していますが、しかし相変わらずメールは届きません…

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

System information
System:
Current User:   git
Using RVM:      no
Ruby Version:   2.3.6p384
Gem Version:    2.6.13
Bundler Version:1.13.7
Rake Version:   12.3.0
Redis Version:  3.2.11
Git Version:    2.14.3
Sidekiq Version:5.0.5
Go Version:     unknown

GitLab information
Version:        10.5.2
Revision:       b951e0d
Directory:      /opt/gitlab/embedded/service/gitlab-rails
DB Adapter:     postgresql
URL:            http://xxx.xxx.xxx.xxx
HTTP Clone URL: http://xxx.xxx.xxx.xxx/some-group/some-project.git
SSH Clone URL:  git@xxx.xxx.xxx.xxx:some-group/some-project.git
Using LDAP:     no
Using Omniauth: no

GitLab Shell
Version:        6.0.3
Repository storage paths:

  • default:      /var/opt/gitlab/git-data/repositories
    Hooks:          /opt/gitlab/embedded/service/gitlab-shell/hooks
    Git:            /opt/gitlab/embedded/bin/git
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • CHERRY

    2018/03/07 16:18

    送られないという部分をもう少し詳しく説明していただけないでしょうか? gitlab のログには、何かメッセージが出ているでしょうか?

    キャンセル

回答 2

check解決した方法

0

解決しました。
先日試したproduction.rbの記述と、gitlab.rbの下記の組み合わせで送信できるようになりました。

gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

gitlab_rails['smtp_openssl_verify_mode'] = 'peer'


ありがとうございました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

SMTPの設定といっても、サーバによってやり方が違います
POP befor SMTP とかPOP/APOPとかポート番号とかとか

できないってだけではどーしよーもないので、サーバからのレスポンスがどうなるのか見てみたらどーでしょう。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/03/07 17:00

    回答ありがとうございます。
    サーバーからのレスポンスというのは、追加したログの内容で把握できますでしょうか。
    SMTPサーバーの詳細はすぐに確認できず、後日になります…

    キャンセル

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

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

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

  • CentOS

    3219questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • GitLab

    163questions

    GitLabは Gitoliteをブラウザから管理できるようにする Rubyアプリケーションで、 GitHubのようなサービスをクローズドな環境に独自で構築できるように 公開されたものです。

  • SMTP

    119questions

    SMTP(Simple Mail Transfer Protocol)はIPネットワークでemailを伝送する為のプロトコルです。