本文へ移動
ハック!でAI

AIを動かす環境とコスト 第7回

自前でメールサーバーを作る。Gmail やレンタルサーバー以外の選択肢

ハック!でAI編集部AIにより執筆読了 約34分
DNS に載せる 6 つの設定(A・MX・SPF・DKIM・DMARC・PTR)を並べた図。ptop.space の公開の値が入っている

この記事でわかること

  • メールの置き場所 6 つの、月額の目安と制限の違い
  • DNS・25 番ポート・証明書など、自前で作るときの要点
  • 編集部の運用で起きたことと、向く人・向かない人

確認した環境: docker-mailserver v16.0.1(Postfix 3.10.13・Dovecot 2.4.1)を編集部のサーバーで試験 / ptop.space の公開の DNS と設定 / 各社の公式のページ / 2026年10月12日に確認

メールのアドレスは、プロバイダーやキャリア、Gmail などのフリーメール、レンタルサーバーのほかに、自分で用意したサーバーでも持てます。この記事では、6 つの置き場所の費用と制限を公式の情報で比べます。そのうえで、編集部の運営会社が動かしているメールのサービス ptop.space を例に、自前のメールサーバーの作り方と、動かし続けるための要点を説明します。

メールの置き場所は 6 つある

メールのアドレスを持つ方法は、大きく 6 つあります。

6 行の表。プロバイダーのメールはメールだけ残すと月 275 円。キャリアのメールは持ち運びが月 330 円。フリーメールは 0 円で Gmail は保存 15GB・送信 1 日 500 通まで。Google Workspace は 1 人月 800 円、Microsoft 365 は 1 人月 1,049 円。レンタルサーバーのメールは月 990〜1,320 円。自前のサーバーは VPS のメモリ 4GB で月 2,640〜3,960 円
メールの置き場所 6 つの比較。月額の目安、アドレスのドメイン、主な制限を、各社の公式のページで並べた撮影・作図: 編集部
  • プロバイダーのメール: インターネットの接続の契約に付くアドレスです。BIGLOBE は、退会すると「退会月の月末をもってBIGLOBEメールアドレスは使えなくなります」と案内しています。接続だけをやめて、有料のプランでメールを残す方法もあります。@nifty は、メールを使い続けるための「@nifty基本料金」が月 275 円(税込)です。
  • キャリアのメール: 携帯電話の回線の契約に付くアドレスです。解約や乗り換えのあとも使い続ける「持ち運び」のサービスは、ドコモ・au・ソフトバンクとも月 330 円(税込)です。申し込みは、解約から 31 日以内です。
  • フリーメール: Gmail は無料で、保存容量は 15GB です(Google ドライブ・Google フォトと共有)。1 日に 500 通を超えて送ると、送信が一時的に止まります。Yahoo!メールは、開設のときは 2GB で、使い方に応じて最大 10GB まで増えます。
  • Google Workspace・Microsoft 365: 自分のドメインのアドレスを、Gmail や Outlook の仕組みで使うサービスです。料金は人数分です。Google Workspace の Business Starter は 1 人あたり月 800 円(税別・年間プラン)です。Microsoft 365 Business Basic は 1 人あたり月 1,049 円(税別・年払い。月ごとの契約は 1,259 円)です。
  • レンタルサーバーのメール: Web のサイト用のレンタルサーバーに付くメールです。エックスサーバーのスタンダードは月 990〜1,320 円(税込)で、メールアカウントの数は無制限です。送信数の目安は 1 時間 1,500 通・1 日 15,000 通です。さくらのメールボックスのように、メールだけを使う月 88 円(税込)からのプランもあります。
  • 自前のサーバー: VPS(仮想専用サーバー)などに、メールの仕組みを自分で入れます。この記事の主題です。

アドレスは、ドメインの持ち主のもの

左は事業者のドメイン。@docomo.ne.jp や @gmail.com のアドレスは、ほかの事業者に移せない。持ち運びは月 330 円。右は自分のドメイン。info@example.com は、DNS の MX レコードを書き換えれば、Google Workspace・レンタルサーバー・自前のサーバーのどこに置いても同じアドレス
アドレスの持ち主の違い。事業者のドメインのアドレスは契約とつながり、自分のドメインのアドレスは置き場所を変えても同じ撮影・作図: 編集部

アドレスの @ の後ろの部分を、ドメインと呼びます。@docomo.ne.jp や @gmail.com のドメインは、事業者のものです。そのため、契約やサービスを変えると、アドレスを持っていけません。持ち運びのサービスは、そのための有料の仕組みです。

自分で登録したドメインなら、アドレスは自分のものです。メールの届け先は、DNS(ドメインの名前とサーバーを結び付ける仕組み)の MX レコードで決まります。MX レコードを書き換えれば、置き場所を Google Workspace からレンタルサーバーへ、レンタルサーバーから自前のサーバーへと変えても、同じアドレスを使い続けられます。

人数が増えると、料金の差が開く

折れ線と帯のグラフ。Microsoft 365 Business Basic は 20 人で 23,078 円、Google Workspace Business Starter は 20 人で 17,600 円。自前のサーバーは人数に関係なく 2,640〜3,960 円、レンタルサーバーのメールは 990〜1,320 円。5 人で Workspace は 4,400 円、Microsoft 365 は 5,770 円
メールのアドレスを使う人数と、1 か月の料金(円・税込に換算)。自前のサーバーには、見る人の手間を入れていない撮影・作図: 編集部
使う人数 Google Workspace Business Starter Microsoft 365 Business Basic レンタルサーバーのメール 自前のサーバー(VPS・メモリ 4GB)
1 人 880 円 1,154 円 990〜1,320 円 2,640〜3,960 円
5 人 4,400 円 5,770 円 同じ 同じ
10 人 8,800 円 11,539 円 同じ 同じ
20 人 17,600 円 23,078 円 同じ 同じ
  • 税別の料金は、消費税 10% を足して税込にしました。キャンペーンの割引は入れていません。
  • Google Workspace と Microsoft 365 は、メールのほかに、文書の作成・保存・会議などを含むプランです。メールだけの料金ではありません。
  • VPS は、エックスサーバー VPS(1 か月契約)2,640 円、ConoHa VPS 3,608 円、さくらの VPS(東京・毎月払い)3,960 円の幅です。ドメインの費用は入れていません。

1 人ごとに料金がかかるサービスは、5 人以上で、VPS 1 台の月額(高いほうで 3,960 円)を超えます。ただし、自前のサーバーには、設定と運用の手間がかかります。次の章から、その中身を説明します。

自前のメールサーバーの全体像

編集部の運営会社は、2026年9月から、メールのサービス ptop.space を自前のサーバーで動かしています。招待制のサービスです。このメディアのログインの確認のメールや、社内のサーバーの監視の通知も、このサーバーのアドレスから送っています。

左にほかのメールサーバー、メールのアプリ、ブラウザ。25 番、465・587 番と 993 番、443 番で VPS 1 台とつながる。VPS の中に docker-mailserver(Postfix、Dovecot、OpenDKIM、OpenDMARC と SPF の確認、Amavis と ClamAV、Fail2ban と Postscreen)、ポータル、まわりの仕組み。下に DNS と、別の場所へのバックアップ
自前のメールサーバーの全体の構成(ptop.space の例)。VPS 1 台に、メールの仕組みと管理用の画面をまとめている撮影・作図: 編集部

仕組みは、次の 3 つです。

  • docker-mailserver: メールのサーバーに必要なソフトを、1 つのコンテナ(ソフトと設定をまとめて動かす入れ物)にした、オープンソースの道具です。公式のドキュメントは「a production-ready fullstack but simple mail server (SMTP, IMAP, LDAP, Anti-spam, Anti-virus, etc.)」と説明しています。メールを配送する Postfix、メールを保存してアプリに渡す Dovecot、署名を付ける OpenDKIM、ウイルスを検査する ClamAV などが入っています。
  • ポータル: アドレスの作成、Web メール、送信の許可、上限の管理のための、自作の Web アプリです。docker-mailserver の命令を呼び出して、アドレスを作ります。
  • まわりの仕組み: Web サーバー(nginx)、Let's Encrypt の証明書、定期の処理(バックアップ・古いメールの整理・予約送信)です。

サーバーは、4 コア・メモリ 6GB 級の VPS 1 台です。

すべてのシステムが正常に稼働しています、最終更新 2026/10/12 8:47:54。24 時間・7 日間・30 日間の稼働率は 100%。ポータル、データベース、メールサーバー、SMTP 送信 465、SMTP 送信 587、IMAP 受信 993 が正常。TLS 証明書は残り 52 日、DKIM 署名は selector: mail
ptop.space のステータスのページ(公開のページを編集部が撮影)。①送信と受け取りの窓口の応答、②証明書の残りの日数、③DKIM の鍵を表示している撮影・作図: 編集部

ステータスのページは、だれでも見られます。送信と受け取りの窓口が応答しているか、証明書の期限まで何日あるか、DKIM(後で説明する署名)の鍵があるかを確かめて、表示します。

作る前に確かめる 3 つのこと

サーバーを借りる前に、次の 3 つを確かめます。

1. 25 番ポートを外へ出せるか

メールサーバーどうしは、25 番ポート(通信の出入り口の番号)でメールを受け渡します。届くメールを受けるのも、ほかのサーバーへ届けるのも 25 番です。このうち外へ出る向きの 25 番は、迷惑メールの対策として、初めは止めている事業者が多くあります。

表。AWS EC2 は公開の IP アドレスあての 25 番を止めていて解除を申請する。Google Cloud は外部あての 25 番を止めている。Microsoft Azure は Enterprise Agreement などを除く契約で止めている。エックスサーバー VPS は契約から 72 時間、さくらの VPS は本登録から 72 時間程度止める。ConoHa VPS は 2026年5月12日以降のアカウントで止めていてフォームから申請する。家庭や事務所の回線は OP25B で止める仕組みがある
外向きの 25 番ポートの扱い。クラウド 3 社、国内の VPS 3 社、家庭や事務所の回線の、初めの状態と送る方法撮影・作図: 編集部
  • クラウド: AWS の EC2 は、公開の IP アドレスあての 25 番を初めから止めていて、解除を申請できます。Google Cloud は、外部あての 25 番を止めています(一部のプロジェクトを除く)。Microsoft Azure は、Enterprise Agreement などを除く契約で止めています。
  • 国内の VPS: エックスサーバー VPS は契約から 72 時間、さくらの VPS は本登録から 72 時間程度、25 番での送信を止めます。ConoHa VPS は、2026年5月12日以降に作ったアカウントで止めていて、使うにはフォームから申請します。申請では、1 日の送信数や用途を書きます。
  • 家庭や事務所の回線: プロバイダーが、動的な IP アドレスからの 25 番を止める仕組み(OP25B)があります。ブラックリストを運営する Spamhaus も、利用者向けの回線の IP アドレスを、メールを届け先へ直接送るべきでない範囲として、一覧(PBL)に載せています。自宅のサーバーから直接届ける形は、選びにくくなっています。

25 番を出せないときは、送信だけを外部の配信のサービスに中継する方法があります(後の章で説明します)。

2. 逆引き(PTR)を設定できるか

逆引きは、IP アドレスから名前を引く設定です。docker-mailserver のドキュメントは、サーバーの条件として「You should be able to set a PTR record for your host」を挙げています。Gmail も、すべての送信者に、正引きと逆引きの DNS の設定を求めています。

逆引きは、ドメインの DNS ではなく、IP アドレスを持つ事業者の側で設定します。

VPS 逆引きの設定(公式の説明)
エックスサーバー VPS VPS パネルの「逆引きホスト名」で「任意のホスト名に変更することができます」
ConoHa VPS 「初期状態で設定されていますが、コントロールパネルよりお客様にて変更いただくことも可能です」
さくらの VPS コントロールパネルの「ホスト名逆引き登録」で変える。先に、その名前の A レコードがサーバーの IP アドレスを指している必要がある

3. メモリが足りるか

横棒グラフ。試験のウイルス検査なしは約 60MiB、試験のウイルス検査(ClamAV)ありは約 1.07GiB(うち ClamAV が約 0.94GiB)、編集部の運営会社のサーバーの記録は約 1.6GB。目安の線として docker-mailserver の推奨 2GB、ClamAV の最小 3GiB と推奨 4GiB
メールのサーバーが使うメモリ。編集部の試験では、ウイルス検査なしで約 60MiB、ClamAV を入れると約 1.07GiB だった撮影・作図: 編集部
  • docker-mailserver の公式の推奨は、1 vCore(仮想の CPU 1 つ)・メモリ 2GB・スワップあり、です。最小は 512MB ですが、その場合は ClamAV などを動かさないよう案内しています。
  • ウイルス検査の ClamAV の公式のドキュメントは、メモリを最小 3GiB、推奨 4GiB としています。ウイルスの定義を読み込むだけで、1.2GiB 以上を使うためです。
  • 編集部の試験では、ウイルス検査なしのコンテナは約 60MiB でした。ClamAV を入れると、約 1.07GiB に増えました。

ウイルス検査を入れるなら、ClamAV の最小の 3GiB を満たす、メモリ 4GB のプランが目安です。

DNS の設定

メールが届き、送ったメールが信用されるかどうかは、DNS の設定で決まります。ptop.space に実際に載っている設定を、図にしました。

6 つの設定。A は mail.ptop.space からサーバーの IP アドレス。MX は ptop.space の届け先が 10 mail.ptop.space。SPF は v=spf1 ip4 サーバーの IP アドレス -all。DKIM は mail._domainkey.ptop.space に v=DKIM1 h=sha256 k=rsa と公開鍵。DMARC は _dmarc.ptop.space に v=DMARC1 p=quarantine rua=mailto:postmaster@ptop.space。PTR はサーバーの IP アドレスから mail.ptop.space
DNS に載せる 6 つの設定。ptop.space の公開の値(IP アドレスは伏せている)と、それぞれの役割撮影・作図: 編集部

自分のドメインに置き換えると、次のようになります(example.com と 203.0.113.10 は、例示用の値です)。

mail.example.com.             A     203.0.113.10
example.com.                  MX    10 mail.example.com.
example.com.                  TXT   "v=spf1 ip4:203.0.113.10 -all"
mail._domainkey.example.com.  TXT   "v=DKIM1; h=sha256; k=rsa; p=(公開鍵)"
_dmarc.example.com.           TXT   "v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com"
  • MX: そのドメインあてのメールを届けるサーバーの名前です。
  • SPF: そのドメインのメールを送ってよいサーバーを書きます。「-all」は、書いたもの以外を認めない指定です。docker-mailserver のドキュメントは、初めは緩い「~all」で確かめ、そのあと「-all」にする進め方を紹介しています。
  • DKIM: 送るメールに付けた署名を、受け取る側が確かめるための公開鍵です。秘密の鍵は、サーバーの中に置きます。
  • DMARC: SPF と DKIM に失敗したメールを、受け取る側にどう扱ってほしいかを書きます。docker-mailserver のドキュメントは、初めの例として「p=none」(何も求めない)を、厳しめの例として「p=quarantine」(隔離)を示しています。ptop.space は隔離にしています。
  • 逆引き(PTR): 前の章のとおり、VPS の管理画面で設定します。A レコードと逆引きは、行きと帰りで同じ名前と IP アドレスになるようにします。

設定が反映されたかは、dig というコマンドで確かめられます。

ターミナル
dig +short MX example.com
dig +short A mail.example.com
dig +short -x 203.0.113.10
dig +short TXT example.com
dig +short TXT mail._domainkey.example.com
dig +short TXT _dmarc.example.com

作る手順(docker-mailserver)

ここからは、編集部の試験の画面で、手順を説明します。Docker(コンテナを動かす道具)が入った Linux のサーバーを使います。

  1. 設定ファイル(compose.yaml)を書く

    動かすコンテナと設定を、1 つのファイルに書きます。次は、ptop.space の設定をもとにした、最小の例です。

    YAML
    services:
      mailserver:
        image: ghcr.io/docker-mailserver/docker-mailserver:latest
        container_name: mailserver
        hostname: mail.example.com
        ports:
          - "25:25"     # ほかのメールサーバーから届く
          - "465:465"   # 送信(初めから TLS)
          - "587:587"   # 送信(STARTTLS)
          - "993:993"   # 受け取り(IMAP)
        volumes:
          - ./docker-data/dms/mail-data/:/var/mail/
          - ./docker-data/dms/mail-state/:/var/mail-state/
          - ./docker-data/dms/mail-logs/:/var/log/mail/
          - ./docker-data/dms/config/:/tmp/docker-mailserver/
          - /etc/letsencrypt/:/etc/letsencrypt/:ro
          - /etc/localtime:/etc/localtime:ro
        environment:
          - SSL_TYPE=letsencrypt
          - POSTMASTER_ADDRESS=postmaster@example.com
          - SPOOF_PROTECTION=1
          - ENABLE_OPENDKIM=1
          - ENABLE_OPENDMARC=1
          - ENABLE_AMAVIS=1
          - ENABLE_CLAMAV=1
          - ENABLE_FAIL2BAN=1
          - PERMIT_DOCKER=none
        cap_add:
          - NET_ADMIN   # Fail2ban が接続を止めるために使う
        restart: unless-stopped
        stop_grace_period: 1m
    

    公式のドキュメントによると、差出人のなりすましを防ぐ SPOOF_PROTECTION、ウイルス検査の ENABLE_CLAMAV、総当たりを止める ENABLE_FAIL2BAN は、初めの値が 0(無効)です。この例では、明示して有効にしています。

  2. 証明書を用意する

    メールのアプリとの通信も、サーバーどうしの通信も、TLS(通信の暗号化)を使います。ptop.space は、無料の Let's Encrypt の証明書を使っています。サーバーで証明書を取り、その置き場所を読み取り専用でコンテナに渡します。

    ターミナル
    certbot certonly --webroot -w /var/www/certbot -d mail.example.com
    

    SSL_TYPE=letsencrypt と書くと、docker-mailserver がこの証明書を使います。

  3. 起動して、最初のアドレスを作る

    ターミナル
    docker compose up -d
    docker exec -it mailserver setup email add info@example.com
    docker exec mailserver setup email list
    

    初めて起動したら、2 分以内に最初のアドレスを作ります。作らないと、docker-mailserver は止まります(公式のドキュメント)。

    docker exec -it mailserver setup email add support@example.com を実行し、Enter Password と Confirm Password に答える。続いて docker exec mailserver setup email list を実行すると、info@example.com、new@example.com、support@example.com の 3 つが表示される
    アドレスを作って、一覧を表示した画面(編集部の試験)。①作るアドレスを指定する、②パスワードを 2 回入力する(画面には出ない)、③作ったアドレスの一覧撮影・作図: 編集部
  4. DKIM の鍵を作り、DNS に載せる

    ターミナル
    docker exec mailserver setup config dkim
    

    鍵は RSA の 2048 ビットで、鍵の名前(セレクター)は「mail」です。できた mail.txt の中身を、DNS の TXT レコードに載せます。値は 255 文字ごとに分かれています。DNS の管理画面によっては、引用符を外して 1 行につなげて入れます。

    docker exec mailserver setup config dkim を実行すると、Creating DKIM private key と表示される。ls で mail.private と mail.txt が見える。cat mail.txt で、mail._domainkey IN TXT v=DKIM1; h=sha256; k=rsa; p= に続く公開鍵が表示される
    DKIM の鍵を作った画面(編集部の試験)。①鍵を作る命令、②秘密の鍵(mail.private)と、DNS に載せる値(mail.txt)、③DNS に載せる TXT レコード撮影・作図: 編集部

    鍵を作ったら、コンテナを作り直します。公式のドキュメントは、OpenDKIM を使う場合、docker compose up --force-recreate のあとで、送るメールに署名が付くと説明しています。

    ターミナル
    docker compose up -d --force-recreate
    
    docker compose up -d --force-recreate を実行すると、Container mailserver Started 11.8s と表示される
    コンテナを作り直した画面(編集部の試験)。①作り直す指定、②かかった時間は 11.8 秒撮影・作図: 編集部
  5. 送って、署名を確かめる

    メールを 1 通送り、届いたメールのヘッダー(差出人や経路などの情報)に DKIM-Signature があるかを見ます。編集部の試験では、info@example.com から new@example.com へ送り、届いたメールに署名が付いていることを確かめました。

    doveadm fetch で new@example.com の受信トレイのヘッダーを表示。Return-Path: info@example.com、Delivered-To: new@example.com に続いて、DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=example.com; s=mail; が付いている
    届いたメールのヘッダー(編集部の試験)。①届け先のアドレス、②DKIM の署名に、ドメイン(d=)と鍵の名前(s=)が入っている撮影・作図: 編集部

    外のアドレスへ送ったときは、受け取った側でも確かめます。Gmail では、メールを開いて、返信の横のメニューから「メッセージのソースを表示」を選ぶと、ヘッダーの全体を見られます。

送ったメールが届くまで

1 メールのアプリが 465・587 番で送る。2 サーバーが受け付ける(ログインした人と差出人が同じか、送信を許可したアドレスか、1 日の上限の中か)。3 DKIM の署名を付ける。4 相手のサーバーへ 25 番で届ける。5 受け取る側が、逆引き、SPF、DKIM、DMARC、評判を確かめ、受信トレイへ、迷惑メールのフォルダへ、受け取りを断る、のどれかになる
送ったメールが相手に届くまでの流れ。自前のサーバーが受け持つのは 2〜4 で、届くかどうかは 5 の受け取る側が決める撮影・作図: 編集部

送信は、自分のサーバーが受け付けたら終わりではありません。最後に、受け取る側のサーバーが、送ってきた相手を確かめます。

受け取る側の決まり

表。すべての送信者に、Gmail は SPF か DKIM、正引きと逆引きの DNS、TLS、迷惑メール率 0.3% 未満、RFC 5322 の形式を求める。Yahoo は SPF か DKIM、正引きと逆引きの DNS、迷惑メール率 0.3% 未満。大量に送る送信者には、SPF と DKIM の両方、DMARC、差出人のドメインの一致、登録の解除の仕組みを求める。満たさないと、Gmail は迷惑メールに分類または拒否、Outlook.com は 550 5.7.515 で断る
受け取る側が送信者に求めること。Gmail・Yahoo(米国)・Outlook.com などの公式の説明から撮影・作図: 編集部

Gmail は、2024年2月1日から、Gmail アカウントへ送るすべての送信者に、次のことを求めています。

  • SPF か DKIM で、送信ドメインを認証する
  • 送信元の IP アドレスかドメインに、正引きと逆引きの DNS を設定する
  • TLS で送る
  • 迷惑メールとして報告される割合を、0.3% 未満に保つ

1 日に 5,000 件以上を送る送信者には、SPF と DKIM の両方、DMARC、ワンクリックの登録の解除なども求めています。Gmail のよくある質問によると、2025年11月から、要件を満たさないメールへの適用を強めています。このガイドラインの対象は、個人の Gmail アカウントあてのメールです。

自前のサーバーから少ない通数を送る場合も、「すべての送信者」の要件は当てはまります。前の章の DNS の設定と証明書は、このために要ります。

ブラックリストと評判

受け取る側は、送ってきた IP アドレスの評判も見ます。迷惑メールの送信元の一覧(ブラックリスト)は、その材料の 1 つです。Gmail のガイドラインも、評判が下がると届きにくくなると説明しています。

編集部は、2026年10月12日に、ptop.space のサーバーの IP アドレスが、SpamCop・Barracuda・PSBL・Mailspike の 4 つの一覧に載っていないことを、DNS の問い合わせで確かめました。Spamhaus の一覧は、使った DNS のサーバーからは結果を得られなかったので、確かめていません。Spamhaus の一覧は、公式の確認のページ(check.spamhaus.org)で調べられます。

迷惑メールの送信元にしない(送信の許可制)

自前のサーバーで最も避けたいのは、作ったアドレスが迷惑メールの送信に使われて、ドメインと IP アドレスの評判が下がることです。ptop.space は、新しいアドレスを「受信だけ」で始め、管理者が許可したアドレスだけが外へ送れるようにしています。

「送信は承認後」とはどういう意味ですか? ドメインが迷惑メールの送信元にされないよう、新しいアドレスは受信のみで始まります。管理者が承認すると外部送信が有効になります。受信は最初から使えます。
ptop.space のよくある質問(公開のページを編集部が撮影)。新しいアドレスは受信のみで始まり、管理者が承認すると外部への送信が有効になる撮影・作図: 編集部

仕組みは、Postfix の設定 1 行です。docker-mailserver が起動の最後に読むファイル(user-patches.sh)に書きます。

ターミナル
#!/bin/bash
postconf -e 'mua_sender_restrictions = reject_authenticated_sender_login_mismatch, check_sender_access texthash:/tmp/docker-mailserver/sender-access, reject'

この設定は、送信用の窓口(465・587 番)だけに効きます。意味は、次の 3 つです。

  • ログインした人と、差出人のアドレスが違えば断る(なりすましの防止)
  • 許可の一覧(sender-access)にあるアドレスなら受け付ける
  • それ以外は断る

外から届くメール(25 番)には効かないので、受信は初めから使えます。編集部の試験で、動きを確かめました。

postconf mua_sender_restrictions の結果に、reject_authenticated_sender_login_mismatch、check_sender_access、reject が並ぶ。試験の結果は、info@example.com からの送信が 554 5.7.1 Sender address rejected: Access denied、new@example.com からも同じ。info@example.com でログインして ceo@example.com を名乗ると 553 5.7.1 Sender address rejected: not owned by user info@example.com
許可を出す前の試験の画面。①設定の中身、②許可の一覧が空なので、どのアドレスからの送信も断られた、③他人のアドレスを名乗る送信は、別の理由で断られた撮影・作図: 編集部
echo info@example.com OK を sender-access に足し、docker exec mailserver postfix reload を実行。試験の結果は、info@example.com からの送信が 250 2.0.0 Ok: queued、new@example.com からの送信は 554 5.7.1 Access denied、ceo@example.com を名乗る送信は 553 5.7.1 not owned by user
info@example.com だけに許可を出したあとの試験の画面。①許可の一覧に 1 行足して、Postfix に読み直させる、②許可したアドレスからの送信は受け付けた、③許可のないアドレスは断られたまま撮影・作図: 編集部

ptop.space のポータルは、管理者が画面で許可を出すと、この一覧を書き換えて Postfix に読み直させます。加えて、次の決まりも入れています。

  • 利用者ごとに、1 日の送信数の上限を決める
  • 直近 7 日の送信の失敗が 2 割を超えたら、上限を半分に下げる
  • 転送したメールが SPF で落ちないよう、差出人を書き換える仕組み(SRS)を有効にする

ウイルス検査と、守りの設定

編集部の運営会社は、2026年9月28日に、ウイルス検査(ClamAV)を有効にしました。そのときの設定と確認は、次のとおりです。

  • 止めるのはウイルスだけ: ウイルスの付いたメールは届けずに隔離し、管理者に知らせます。それ以外の理由では、メールを止めません(理由は「運用で起きたこと」で説明します)。
  • 検査する大きさ: docker-mailserver は、初めの設定では 25MB を超えるメールを検査しません。ptop.space は、受け付けるメールの上限(50MB)に合わせて、50MB まで検査する設定にしています。
  • 確認: 試験用の無害な検体を付けたメールは隔離され、ふつうのメールは届きました。送るメールの DKIM の署名も、付いたままでした。

ほかに、次の守りを入れています。

  • 保存するメールの暗号化: サーバーに保存するメールを、Dovecot の機能(mail_crypt)で暗号化しています。
  • 総当たりへの対策: パスワードを何度も試す接続元を、Fail2ban が止めます。
  • 認証は暗号化のあとだけ: 編集部が ptop.space の 587 番の窓口を外から調べたところ、TLS で暗号化する前は、パスワードでの認証を受け付けない設定でした。25 番の窓口は、TLS 1.3 でつながりました(2026年10月12日に確認)。

証明書は、更新と見張りを自動にする

階段のグラフ。いまは 90 日、2027年2月10日から 64 日、2028年2月16日から 45 日。2025年6月4日に期限切れの通知のメールを終了。編集部の運営会社の証明書は 2026年9月4日から 12月3日の 90 日。2029年3月15日から、業界の決まりで最長 47 日
Let's Encrypt の証明書(初期設定のもの)の有効期間の予定。90 日から、2027年2月に 64 日、2028年2月に 45 日へ短くなる撮影・作図: 編集部

ptop.space は、Web の画面とメールの窓口で、同じ証明書を使っています。証明書は Let's Encrypt のもので、有効期間は 2026年9月4日から 12月3日までの 90 日です(編集部が外から確かめた値)。

証明書の運用は、次の 2 つが変わっています。

  • 有効期間が短くなる: Let's Encrypt は、初期設定の証明書の有効期間を、2027年2月10日から 64 日、2028年2月16日から 45 日にすると発表しています。業界の決まりで、2029年3月15日からは最長 47 日になるためです。更新は、期限までの 3 分の 2 が過ぎたころを目安にし、60 日ごとのような決め打ちをやめるよう案内しています。
  • 期限切れの通知のメールが来ない: Let's Encrypt は、期限が近い証明書を知らせるメールを、2025年6月4日に終えました。期限の見張りは、自分で用意します。

ptop.space は、更新を自動にし、更新のあとに Web サーバーとメールのコンテナへ読み込ませています。ステータスのページでは、証明書の残りが 14 日を切ると「一部低下」と表示します。

バックアップ

3 つの枠。毎晩、メールのデータ、メールの設定と DKIM・暗号化の鍵、ポータルのデータベース、証明書、Web サーバーと定期の処理の設定を 1 つのファイルにまとめる。サーバーの中に 14 日分を残し、管理者だけが読める権限にする。そのあと、バックアップ用のサーバーが取りに来て、世代を分けて保存し、クラウドのストレージにも写す。大きなファイルの置き場とログは入れていない
バックアップの流れ(ptop.space の例)。毎晩 1 つのファイルにまとめ、14 日分を残し、そのあと別のサーバーが取りに来る撮影・作図: 編集部

メールのサーバーは、自分でバックアップを取ります。docker-mailserver の公式のよくある質問は、データと設定のフォルダ(docker-data/dms)を tar でまとめる方法を紹介しています。

ptop.space では、毎晩、メールのデータ・設定・鍵・ポータルのデータベースなどを 1 つのファイルにまとめ、14 日分を残しています。まとめたファイルには鍵とパスワードが入るので、管理者だけが読める権限にしています。そのあと、別のバックアップ用のサーバーが取りに来て、サーバーの外にも保存します。

運用で起きたこと

編集部の運営会社のサーバーの運用で、実際に起きたことと、直したことです。

6 つの枠。1 容量の設定のずれで古いメールを消していた。2 ウイルスの定義の更新でメモリが足りなくなるおそれ。3 初めの設定は正しいメールも送り返す。4 設定の変更は作り直さないと効かない。5 アドレスを足した直後は数秒ログインできない。6 大きな添付は相手が受け取れない。それぞれに直したことが書かれている
運用で起きたことと、直したこと。運用の記録から 6 つ撮影・作図: 編集部
  1. 容量の設定のずれで、古いメールを消していた: ptop.space は、利用者の容量の上限を超えると、古いメールから消します。この上限の設定が 2 か所に分かれていて、値が食い違っていました。そのため、上限に届いていない利用者の古いメールが消える状態になっていたことがあります。直したあとは、上限を 1 か所の設定から読みます。下限を決めて、使っている量がそれより少ないときは消しません。消した記録を残し、消さずに結果だけを見る試し運転も付けました。
  2. ウイルスの定義の更新で、メモリが足りなくなるおそれ: ClamAV は、定義を新しくするあいだ、新旧の 2 つを同時に持ちます。公式のドキュメントも、そのあいだは一時的に 2 倍のメモリを使うと説明しています。メモリ 6GB 級のサーバーでは余裕が小さいので、同時に持たない設定(ConcurrentDatabaseReload no)にしました。そのかわり、更新のあいだ、検査は待ちます。
  3. 初めの設定は、正しいメールも送り返す: docker-mailserver v16.0.1 の初めの設定は、ヘッダーの形式が崩れたメールを、送り主に返す指定(D_BOUNCE)です。ふつうの送り主のメールも、当てはまることがあります。編集部は、止めるのをウイルスだけにしました。
  4. 設定の変更は、作り直さないと効かない: コンテナを再起動するだけでは、設定を読み込む処理が動きませんでした。作り直すと、30〜60 秒は送受信が止まります。公式のドキュメントも、docker compose up と down を使い、start と stop は使わないよう案内しています。
  5. アドレスを足した直後は、数秒ログインできない: アドレスを作ると、Dovecot が設定を読み直します。そのあいだは、ほかのアドレスのログインも失敗します。
  6. 大きな添付は、相手が受け取れない: 自分のサーバーの上限を 50MB にしても、相手の側の上限は変えられません。Gmail の添付の上限は 25MB です。ptop.space は、20MB を超える添付を、ダウンロード用のリンクにして送ります。ファイルは、期限が来たら消します。

動かし続ける手間

左は自動で動く処理。毎分は予約送信と期限の切れたファイルの削除。6 時間ごとはごみ箱と迷惑メールのフォルダの整理と容量の確認。毎晩はバックアップで、別のサーバーが取りに来る。ウイルスの定義の更新は毎日。期限の前に証明書の更新。右は人が受け持つこと。送信の許可と上限の引き上げ、配送待ちのメールの確認、不審な接続元の遮断、ブラックリストの確認、試験用の環境での確認、OS とコンテナの更新、バックアップから戻す
動かし続けるための、定期の処理と人の作業(ptop.space の例)撮影・作図: 編集部

定期の処理は、自動にできます。人に残るのは、許可や上限の判断、変更の前の確認、更新、もしものときの対応です。事業者のメールのサービスでは、これらを事業者が受け持ちます。

AI とメールサーバー

Claude Code の公式のドキュメントは、Claude Code を「reads your codebase, edits files, runs commands」(コードを読み、ファイルを編集し、コマンドを実行する)道具だと説明しています。設定ファイルを書く、DNS の値を確かめる、ログを読んで原因を調べる、といったメールサーバーの作業も頼めます。

編集部の運営会社でも、ptop.space の作業に Claude Code を使っています。

  • 変更と試験: 機能の追加や設定の変更は、Claude Code に頼んでいます。変更は、外へ配送しない試験用のメールサーバーで自動の試験を通します。アドレスの共有の機能では、87 項目の試験を通しました。本番への反映は、人が確かめて、了承してから行います。
  • 原因の調査: 「運用で起きたこと」の 1 は、原因を調べて直す作業を Claude Code に頼みました。バックアップから戻すかどうかは、人が決めました。
  • アドレスの用意: このメディアの通知用のアドレスは、2026年10月12日に、Claude Code が作業して用意しました。サーバーに入るための本人確認は、人が行っています。ポータルには API(プログラムから使う窓口)もあり、プログラムからアドレスを作れます。

AI が手伝っても、変わらないことがあります。受け取る側の決まり、IP アドレスの評判、バックアップの責任は、サーバーを動かす人に残ります。サーバーで AI を動かす利点は、この連載の第 1 回サーバーで AI を動かすメリットとは?で説明しています。

25 番を出せないとき: 送信だけ外部に任せる

外向きの 25 番を使えないサーバーでも、受け取りは自前で行い、送信だけを外部の配信のサービスに中継できます。docker-mailserver のドキュメントは、中継のサービス(relay host)を使う理由として、25 番を止められている場合と、中継のサービスの評判を使える点を挙げています。

  • Amazon SES は、従量の料金が 1,000 通あたり 0.10 米ドルです(添付のデータは 1GB あたり 0.12 米ドル)。SMTP の窓口は、587・2587 番(STARTTLS)と 465・2465 番で使えます。
  • Microsoft Azure と Google Cloud も、認証つきの中継のサービスを使う方法を、公式に案内しています。

大量の宣伝のメールを送るときに要ることは、前の回の自作で脱 SaaS はできる?の「大量のメールの配信」で説明しています。

向く人・向かない人

流れ図。1 自分のドメインのアドレスが要るか。いいえならフリーメール・キャリア・プロバイダーのメール。2 サーバーを見る人と時間を毎月とれるか。いいえなら Google Workspace・Microsoft 365 かレンタルサーバーのメール。3 アドレスを数十個より多く作る、またはプログラムから作って使うか。いいえならレンタルサーバーのメール。4 25 番ポートを外へ出せて逆引きを設定できるサーバーがあるか。いいえなら受け取りは自前で送信は外部へ中継。すべてはいなら自前のサーバー
自前のサーバーが向くかどうかの判断の流れ。上から順に答え、右に進んだところが、まず検討する置き場所撮影・作図: 編集部

向く人

  • 自分のドメインで、アドレスを人や用途ごとに多く作りたい人。人数分の料金がかかりません。
  • 自社のサービスの通知や、サーバーの監視の通知など、プログラムから送るメールの差出人を自分で管理したい人。
  • サーバーの運用に慣れていて、見る時間を毎月とれる人。

向かない人

  • メールが止まったときに、すぐ対応できる人がいない場合。Google Workspace・Microsoft 365・レンタルサーバーのメールは、届けるための運用を事業者が受け持ちます。
  • アドレスが数個で足りる場合。レンタルサーバーのメールのほうが、費用も手間も小さくなります。
  • 25 番ポートと逆引きを用意できない場合。

VPS とクラウドの選び方はクラウド vs VPS。AI の時代に VPS でクラウドは超えられるのか、レンタルサーバーで足りる範囲はWeb はレンタルサーバーで十分。足りなくなる 4 つの場面で説明しています。

まとめ

次の回の配信サービスは帯域が肝。YouTube との併用を選んだ訳では、ライブ配信に必要な回線の帯域の計算と、YouTube Live と組み合わせる方法を説明します。

参考にした公式の情報

XFacebookはてブLINE

この記事は、ハック!でAI編集部が AI を使って執筆しました。画面の画像は、編集部の検証環境で実際に操作して撮影したものです(引用の画像は出典を記載しています)。内容の誤りはお問い合わせからお知らせください。

連載

AIを動かす環境とコスト
全 9 回の目次
  1. 1サーバーで AI を動かすメリットとは? VPS で使う code-server
  2. 2YES ボタンの押し疲れを減らす。お風呂の間も作業を止めない方法
  3. 3Claude Code のサブスクと API、どちらが得か 編集部の実測で計算
  4. 4クラウド vs VPS。AI の時代に VPS でクラウドは超えられるのか
  5. 5Web はレンタルサーバーで十分。足りなくなる 4 つの場面
  6. 6自作で脱 SaaS はできる? 作りやすいものと難しいもの
  7. 7自前でメールサーバーを作る。Gmail やレンタルサーバー以外の選択肢(この記事)
  8. 8配信サービスは帯域が肝。YouTube との併用を選んだ訳
  9. 9API が ATM 化。自社のデータの出し入れに手数料がかかる時代へ