AI

OSSメールサーバー比較:Mailcow vs Mailu vs Stalwart Mail でセルフホストメールを構築

オープンソースラボ編集部2026年6月13日

OSSメールサーバー比較:Mailcow vs Mailu vs Stalwart Mail でセルフホストメールを構築

Google Workspaceは月$6〜18/ユーザー・Microsoft 365は月$6〜22/ユーザー。Mailcow(Docker + Dovecot + Postfix)・Mailu(シンプルコンテナ構成)・Stalwart Mail(Rust製オールインワン)はセルフホスト可能なOSSメールサーバースタックです。メールホスティングを自社サーバーで運用することで、ユーザー数に関わらずほぼ固定コストでメール送受信が可能になります。

セルフホストメールを選ぶ理由

  • コスト削減: Google Workspace月$6 × 100ユーザー = $600/月 → VPS月$20程度に
  • データ主権: メール内容を自社サーバーに保管(M&Aや企業情報が外部クラウドに入らない)
  • カスタムドメイン: 自社ドメインのメールを完全に管理
  • コンプライアンス: 特定業界(医療・金融・行政)での外部SaaSへのデータ送信規制への対応
  • 無制限ストレージ: ユーザーごとのストレージ制限なし(ディスク容量のみ)

セルフホストメールの事前知識:SPF・DKIM・DMARC

メールの届達率(到達率)はDNS設定が最重要です。これらを設定しないとGmail・Outlookにスパム判定されます。

# 必須のDNSレコード設定(例: mail.yourcompany.com でメールサーバーを運営)

# 1. MXレコード(メール受信サーバーを指定)
yourcompany.com.  MX  10  mail.yourcompany.com.

# 2. SPFレコード(このサーバーのみ送信許可)
yourcompany.com.  TXT  "v=spf1 ip4:YOUR_SERVER_IP ~all"

# 3. PTRレコード(逆引きDNS - VPSプロバイダーのパネルで設定)
# YOUR_SERVER_IP → mail.yourcompany.com

# 4. DKIM(Mailcow等が自動生成するDNSレコードを追加)
mail._domainkey.yourcompany.com.  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgk..."

# 5. DMARCレコード(SPF/DKIM失敗時のポリシー)
_dmarc.yourcompany.com.  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@yourcompany.com"

主要ツールの概要

Mailcow

最も人気のあるDockerベースのセルフホストメールスタックです。GitHubスター9k+。PostfixをSMTP(送受信)・DovecotをIMAP/POP3・SOGoをWebメール・Rspamdをスパムフィルタとして組み合わせ、単一のdocker-compose.ymlで全部入りの環境を構築できます。管理UIからユーザー・ドメイン・DKIM・DMARC・エイリアスを設定できます。

# Mailcowのインストール(Ubuntu 22.04推奨)
# 事前条件: ポート25・80・443・143・465・587・993・4190が開いていること

git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized

# 設定ファイルを生成(対話式)
./generate_config.sh
# → MAILCOW_HOSTNAME=mail.yourcompany.com と入力

# 起動
docker compose pull
docker compose up -d

# DKIMキーを生成(管理UIからも可能)
docker compose exec rspamd-mailcow rspamadm dkim_keygen   -b 2048 -s mail -k /var/lib/rspamd/dkim/yourcompany.com.mail.key   > /tmp/dkim.txt

cat /tmp/dkim.txt  # DNS TXTレコード用の値が表示される
# Mailcow REST APIでユーザーを追加(自動プロビジョニング)
MAILCOW_URL="https://mail.yourcompany.com"
API_KEY="your-mailcow-api-key"  # Admin > Access > API

# メールボックスを作成
curl -X POST   -H "X-API-Key: ${API_KEY}"   -H "Content-Type: application/json"   "${MAILCOW_URL}/api/v1/add/mailbox"   -d '{
    "local_part": "john.doe",
    "domain": "yourcompany.com",
    "name": "John Doe",
    "password": "SecurePassword123!",
    "password2": "SecurePassword123!",
    "quota": "10240",
    "active": "1"
  }'

# エイリアス(転送設定)を作成
curl -X POST   -H "X-API-Key: ${API_KEY}"   "${MAILCOW_URL}/api/v1/add/alias"   -d '{"address":"info@yourcompany.com","goto":"john.doe@yourcompany.com","active":"1"}'

Mailu

よりシンプルな構成のDockerメールスタックです。GitHubスター6k+。Mailcowより設定ファイルが少なく、初心者でもセットアップしやすい。AdminインターフェースはFlask製で軽量。PostfixでなくFlask-PostfixとのよりシンプルなSMTP構成を採用。RainloopベースのシンプルなWebメール(Roundcube)が内蔵されています。

# docker-compose.yml(Mailu)
version: "3.7"
services:
  front:
    image: ghcr.io/mailu/nginx:2.0
    restart: always
    env_file: mailu.env
    ports:
      - "25:25"
      - "80:80"
      - "443:443"
      - "465:465"
      - "587:587"
      - "993:993"
      - "995:995"
    volumes:
      - mailu_certs:/certs

  resolver:
    image: ghcr.io/mailu/unbound:2.0
    restart: always
    env_file: mailu.env

  admin:
    image: ghcr.io/mailu/admin:2.0
    restart: always
    env_file: mailu.env
    volumes:
      - mailu_data:/data
      - mailu_dkim:/dkim
    depends_on:
      - redis

  imap:
    image: ghcr.io/mailu/dovecot:2.0
    restart: always
    env_file: mailu.env
    volumes:
      - mailu_mail:/mail

  smtp:
    image: ghcr.io/mailu/postfix:2.0
    restart: always
    env_file: mailu.env
    volumes:
      - mailu_mailqueue:/queue

  antispam:
    image: ghcr.io/mailu/rspamd:2.0
    restart: always
    env_file: mailu.env
    volumes:
      - mailu_filter:/var/lib/rspamd

  webmail:
    image: ghcr.io/mailu/webmail:2.0
    restart: always
    env_file: mailu.env
    volumes:
      - mailu_webmail:/data

  redis:
    image: redis:7-alpine
    restart: always
    volumes:
      - mailu_redis:/data

volumes:
  mailu_certs:
  mailu_data:
  mailu_dkim:
  mailu_mail:
  mailu_mailqueue:
  mailu_filter:
  mailu_webmail:
  mailu_redis:

Stalwart Mail

2022年から開発中のRust製オールインワンメールサーバーです。GitHubスター6k+。SMTP・IMAP・JMAP(新しいメールプロトコル)・DKIM・DMARC・SPFを単一バイナリで実装。Postfix + Dovecotの組み合わせに比べてメモリ使用量が大幅に少ない(512MB RAMで動作)。設定はTOMLまたはWeb UIで管理し、バックエンドはSQLite・PostgreSQL・MySQL・FoundationDBから選択できます。

# Stalwart MailをDockerで起動
docker run -d   --name stalwart-mail   --restart unless-stopped   -p 25:25 -p 465:465 -p 587:587   -p 143:143 -p 993:993   -p 8080:8080   -v stalwart_data:/opt/stalwart-mail   stalwartlabs/mail-server:latest

# または docker-compose
version: "3"
services:
  stalwart:
    image: stalwartlabs/mail-server:latest
    restart: always
    ports:
      - "25:25"
      - "587:587"
      - "465:465"
      - "143:143"
      - "993:993"
      - "8080:8080"
    volumes:
      - stalwart_data:/opt/stalwart-mail
    environment:
      TZ: Asia/Tokyo

volumes:
  stalwart_data:

機能比較表

比較項目MailcowMailuStalwart
ライセンスGPL-2.0MITAGPL-3.0
技術スタックPostfix+Dovecot+DockerPostfix+Dovecot+FlaskRust(単一バイナリ)
Webメール内蔵✅(SOGo)✅(Roundcube)❌(別途)
JMAP対応
最小RAM2GB1GB512MB
管理UI✅(リッチ)✅(シンプル)
REST API
GitHub Stars9k+6k+6k+

セルフホストメールとSlackを組み合わせたコミュニケーション戦略はCommunicationカテゴリ/categories/communicationを参照してください。メールサーバーの監視・アラート設定はDevOpsカテゴリ/categories/devopsにまとめています。

FAQ

Q. セルフホストメールはGmailにスパム判定されますか?対策は?

A. 適切なDNS設定をすれば問題ありません。スパム判定を避けるための必須設定: ①PTRレコード(逆引きDNS): VPSのIPアドレスがmail.yourcompany.comに逆引きできること。VPSプロバイダーのコントロールパネルで設定。②SPFレコード: TXTレコードで送信元IPを指定。③DKIMsign: すべての送信メールにDKIM署名を付ける(Mailcow・Mailu・Stalwartすべて自動対応)。④DMARCレコード: 初期はp=noneでレポートのみ収集し、問題がなければp=quarantinep=rejectに段階的に強化。⑤Gmailのスパムチェック: mail-tester.comに送信して10点満点の配信品質スコアを確認する。重要: 新しいIPアドレスはウォームアップが必要で、最初の数週間は少量から送信し徐々に増やすことでGmailの信頼を得ます。

Q. セルフホストメールサーバーのバックアップはどうするべきですか?

A. メールデータのバックアップは特に重要です。推奨戦略:

# MailcowのメールデータをrcloneでS3/Google Driveにバックアップ
# pip install rclone

# rcloneの設定(S3)
rclone config create s3-backup s3   access_key_id=YOUR_KEY   secret_access_key=YOUR_SECRET   region=ap-northeast-1

# メールデータのバックアップスクリプト
cat > /etc/cron.daily/mailcow-backup << 'EOF'
#!/bin/bash
BACKUP_DATE=$(date +%Y%m%d)
MAILCOW_DIR=/opt/mailcow-dockerized

# Docker Composeのボリュームをバックアップ(メールデータ)
docker run --rm   -v mailcowdockerized_vmail-vol-1:/data:ro   -v /tmp/mail-backup:/backup   alpine tar -czf /backup/vmail_${BACKUP_DATE}.tar.gz -C /data .

# S3にアップロード
rclone copy /tmp/mail-backup/ s3-backup:your-bucket/mailcow-backups/
rm -f /tmp/mail-backup/vmail_${BACKUP_DATE}.tar.gz
echo "Backup completed: vmail_${BACKUP_DATE}.tar.gz"
EOF
chmod +x /etc/cron.daily/mailcow-backup

推奨保持期間: 直近7日は毎日バックアップ(差分)、毎月1回のフルバックアップを90日保持。

Q. Google Workspace(Gmail)からMailcowへのメール移行方法は?

A. imapsync(OSSのIMAP同期ツール)が最も確実です。

# imapsyncをインストール
apt-get install imapsync

# GmailからMailcowにメールを移行
imapsync   --host1 imap.gmail.com   --user1 user@yourcompany.com   --password1 "gmail-app-password"   --ssl1   --host2 mail.yourcompany.com   --user2 user@yourcompany.com   --password2 "mailcow-password"   --ssl2   --skipcrossduplicates   --useuid

# 全ユーザーを一括移行(csvから)
while IFS=',' read -r user gmail_pass mailcow_pass; do
  echo "Migrating: $user"
  imapsync --host1 imap.gmail.com --user1 "${user}@yourcompany.com"            --password1 "$gmail_pass" --ssl1            --host2 mail.yourcompany.com --user2 "${user}@yourcompany.com"            --password2 "$mailcow_pass" --ssl2            --skipcrossduplicates
done < users.csv

注意: Gmailのアプリパスワード(MFA有効時)が必要です。移行期間中はGmailとMailcowの両方でメールを受信できるよう、MXレコードを複数設定する移行期間を設けることを推奨します。

Q. VPS(月$5〜20)でMailcowを安定稼働させるためのサーバー要件は?

A. 最低要件: 2vCPU・2GB RAM・20GB SSD(Mailcow公式推奨)。10〜50ユーザーの場合: 2vCPU・4GB RAM・50GB SSD(月$10〜20のVPS)で快適。100ユーザー以上: 4vCPU・8GB RAM・100GB SSD推奨。重要な注意点: ①ポート25(SMTP)がVPSでブロックされていないか確認: Vultr・DigitalOcean・Linodeはポート25をデフォルトでブロックしている場合があります(サポートに申請が必要)②HetznerはSMTPポートがブロックされにくくコスパが良い(CAX11: 2vCPU・4GB RAM月€5〜)③IPレピュテーション: 新しいIPはメール送信実績がないため、初期は到達率が低い場合があります。

まとめ

ユースケース推奨ツール
フル機能・WebUI・チーム向けMailcow
シンプル・初心者向けMailu
軽量・省メモリ・単一バイナリStalwart Mail

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。