2021年7月13日火曜日

Gitlab の docker-compose で SMTP サーバを構築する方法

Gitlab の docker-compose で SMTP サーバを構築する方法

概要

過去に gmail を設定する方法を紹介しました 今回は docker コンテナで postfix サーバを構築してそのメールサーバと gitlab コンテナを連携する方法を紹介します

環境

  • Ubuntu 18.04
  • docker 20.10.7
  • Gitlab 13.12.5
  • postfix

docker-compose.yml

version: "3.6"
services:
  gitlab:
    image: gitlab/gitlab-ee:13.12.5-ee.0
    ports:
      - "22:22"
      - "443:443"
      - "9090:9090"
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://gitlab.example.com'
        gitlab_rails['smtp_enable'] = true
        gitlab_rails['smtp_address'] = "mailserver"
        gitlab_rails['smtp_port'] = 587
        gitlab_rails['smtp_domain'] = "gitlab.example.com"
        gitlab_rails['gitlab_email_from'] = 'gitlab@gitlab.example.com'
        gitlab_rails['gitlab_email_reply_to'] = 'noreply@gitlab.example.com'
    restart: always

  mailserver:
    image: boky/postfix
    environment:
      ALLOWED_SENDER_DOMAINS: 'gitlab.example.com'

解説

postfix のイメージは boky/postfix を使っています ALLOWED_SENDER_DOMAINS で送信を許可するドメインを指定します

gitlab 側は smtp で gitlab_rails['smtp_enable'] を true にします そして smtp_address に postfix コンテナのサービス名を指定します gitlab と postfix コンテナは同一ネットワークに属するためこれで postfix にアクセスできます

from や reply-to に好きなアドレスを指定可能ですが基本的には external_url で起動している gitlab と同じドメインを指定しましょう 理由はメールのドメインが IP で解決できる必要があるためですが、それでも受信側の SPF レコードなどに登録されている必要もあるため迷惑メールになる可能性はあります

動作確認

ユーザを招待してメールが受信できるか確認してみましょう ちなみに Gmail では以下のエラーになり postfix から送信できませんでした

mailserver_1  | 2021-07-06T02:21:53.626911+00:00 INFO    postfix/smtp[385]: AFA8B1A45C7: to=<xxx@gmail.com>, relay=gmail-smtp-in.l.google.com[64.233.188.26]:25, delay=2.9, delays=0.05/0.01/1.9/0.97, dsn=5.7.1, status=bounced (host gmail-smtp-in.l.google.com[64.233.188.26] said: 550-5.7.1 [192.168.100.10] The IP you're using to send mail is not authorized to 550-5.7.1 send email directly to our servers. Please use the SMTP relay at your 550-5.7.1 service provider instead. Learn more at 550 5.7.1  https://support.google.com/mail/?p=NotAuthorizedError t5si1621087pjo.91 - gsmtp (in reply to end of DATA command))

最後に

当然ですがメールの受信はできないので注意しましょう

参考サイト

0 件のコメント:

コメントを投稿