2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenShiftに開発用SMTPサーバーをたてる

Posted at

はじめに

開発プロジェクトでメール送信機能が必要な場合、メールサービスが提供するAPIを利用することが多いため、ポート25や587を直接意識する機会は少ないかもしれません。

しかし、以下のようなケースではSMTPサーバーに直接アクセスしたいというニーズも依然として存在します。

  • SMTPサーバーに直接アクセスしたい
  • 外部のSMTPサービスを使いたくない
  • 送信テストができればよく、実際にメールをリレーする必要はない

当記事では、OpenShiftを利用している方がこれらのニーズに合わせてSMTPサーバーを立ち上げる方法を紹介します。

今回の構成

ベースとなるSMTPサーバーには、活発に更新が行われているMailpitを使用します。OpenShift上には、以下のような構成でオブジェクトを配置します。

qiita-square

インストール

インストールしたいプロジェクトで「YAMLのインポート」を選択し、以下のYAMLを実行します。これだけで必要なオブジェクトが作成されます。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mailpit
  labels:
    app: mailpit
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mailpit
  template:
    metadata:
      labels:
        app: mailpit
    spec:
      containers:
      - name: mailpit
        image: axllent/mailpit
        ports:
        - name: smtp-mailpit
          containerPort: 1025
        - name: web-mailpit
          containerPort: 8025
---
apiVersion: v1
kind: Service
metadata:
  name: mailpit-smtp
spec:
  type: NodePort
  selector:
    app: mailpit
  ports:
  - name: smtp-mailpit-svc
    protocol: TCP
    port: 1025
    targetPort: smtp-mailpit
    nodePort: 31025
---
apiVersion: v1
kind: Service
metadata:
  name: mailpit-web
spec:
  selector:
    app: mailpit
  ports:
  - name: web-mailpit-svc
    protocol: TCP
    port: 8025
    targetPort: web-mailpit
---
apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: mailpit-web
spec:
  to:
    kind: Service
    name: mailpit-web
  port:
    targetPort: web-mailpit-svc
  tls:
    termination: edge
    insecureEdgeTerminationPolicy: Redirect

このYAMLを実行することで、以下のオブジェクトが作成されます。

タイプ 名前
Deployment mailpit
Service mailpit-smtp
Service mailpit-web
Route mailpit-web

ここまでで、Mailpitのサービスが起動します。管理用のWeb画面は、Routeで定義されたURLからアクセスできます。
qiita-square

Web画面では、以下のようにメールの受信状況を確認できます。
qiita-square

OpenShift外部からメール送信できるようにする

RouteはHTTP/HTTPS接続に対応しているため、SMTP接続には別の方法が必要です。このようなケースでは、ServiceをNodePortまたはLoadBalancerタイプで起動するのが一般的とされています。

ただし、OpenShift Localでは上記の手順だけでは動作しない課題があるため、ポートフォワードを使ってサービスのポートをホストネットワークに公開します。

oc port-forward --address 0.0.0.0 service/mailpit-smtp 1025:1025

環境によっては、ファイアウォールによるブロックが発生する場合があります。その際は、運用ルールに合わせて適切に対応してください。

送信サーバー設定

今回の設定をもとにした、送信側のサーバー接続設定は次のようになります。当記事作成にあたっては、OpenShift Local外部の接続を使って検証しています。

接続元 接続設定
OpenShiftの別サービス (mailpit-smtpサービスのServiceルーティングホスト名):1025
OpenShift外部 (NodeのExternalアドレス):31025
OpenShift Local外部 (OpenShift LocalのホストIPアドレス):1025

アンインストール

作成されたオブジェクトを全て削除してください。

おわりに

コンテナ環境を利用すると、さまざまなサービスを迅速に起動できるメリットがあります。SaaSやクラウドサービスなどと使い分けながら、効果的に活用していきたいですね。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?