コンテナ - メールサーバ

提供: MochiuWiki : SUSE, EC, PCB

2026年1月7日 (水) 01:53時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == Postfixは高性能なメールサーバソフトウェア (MTA : Mail Transfer Agent) であり、Dovecotは電子メールの受信と管理を担うソフトウェア (MDA : Mail Delivery Agent) である。<br> <br> Docker / Podmanコンテナとして実行することにより、開発環境や本番環境で簡単にメールサーバを構築することができる。<br> PostfixはSMTPによるメール送信を処理、DovecotはIMAP/POP3に…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

概要

Postfixは高性能なメールサーバソフトウェア (MTA : Mail Transfer Agent) であり、Dovecotは電子メールの受信と管理を担うソフトウェア (MDA : Mail Delivery Agent) である。

Docker / Podmanコンテナとして実行することにより、開発環境や本番環境で簡単にメールサーバを構築することができる。
PostfixはSMTPによるメール送信を処理、DovecotはIMAP/POP3によるメール受信とメールボックス管理を行う。

メールサーバコンテナの主な機能
機能 プロトコル デフォルトポート 説明
SMTP受信 SMTP 25 外部からのメール受信
SMTP送信認証 SMTP / STARTTLS 587 認証付きメール送信 (Submission)
IMAP受信 IMAPS 993 メールクライアントからのIMAP接続
POP3受信 POP3S 995 メールクライアントからのPOP3接続
SASL認証 - - DovecotによるSMTP認証機能



ディレクトリ構成

メールサーバの設定ファイルを管理するためのディレクトリ構成を以下に示す。

mailserver/
├── docker-compose.yml
├── postfix/
│   ├── main.cf
│   ├── master.cf
│   ├── vmailbox
│   └── virtual
├── dovecot/
│   ├── dovecot.conf
│   ├── users
│   └── conf.d/
│       ├── 10-auth.conf
│       ├── 10-mail.conf
│       ├── 10-master.conf
│       └── 10-ssl.conf
├── certs/
│   ├── mail.crt
│   └── mail.key
└── vmail/
    └── (メールボックスデータ)



Containerfile

Containerfileを作成する。

 FROM ubuntu:22.04
 
 ENV DEBIAN_FRONTEND=noninteractive
 
 RUN apt update &&    \
     apt install -y   \
        postfix       \
        dovecot-imapd \
        dovecot-pop3d \
        dovecot-lmtpd \
        supervisor    \
        rsyslog &&    \
     apt clean &&     \
     rm -rf /var/lib/apt/lists/*
 
 COPY postfix/ /etc/postfix/
 COPY dovecot/ /etc/dovecot/
 COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
 
 RUN mkdir -p /var/mail/vmail && \
     groupadd -g 5000 vmail && \
     useradd -u 5000 -g vmail -s /usr/sbin/nologin -d /var/mail/vmail vmail && \
     chown -R vmail:vmail /var/mail/vmail
 
 EXPOSE 25 587 993 995
 
 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]


コンテナイメージをビルドする。

podman build -t mailserver:custom -f Containerfile .


ビルドしたイメージからコンテナを実行する。

podman run -d                         \
       --name mailserver              \
       --hostname mail.example.com    \
       -p 0.0.0.0:25:25               \
       -p 0.0.0.0:587:587             \
       -p 0.0.0.0:993:993             \
       -v ./vmail:/var/mail/vmail     \
       -v ./certs:/etc/ssl/certs/mail \
  mailserver:custom



Compose

Composeファイルを作成する。

 version: '3.8'
 
 services:
   mailserver:
     image: ubuntu:22.04
     container_name: mailserver
     hostname: mail.example.com
     ports:
       - "0.0.0.0:25:25"      # SMTP
       - "0.0.0.0:587:587"    # SMTP Submission
       - "0.0.0.0:993:993"    # IMAPS
       - "0.0.0.0:995:995"    # POP3S
     volumes:
       - ./postfix/main.cf:/etc/postfix/main.cf
       - ./postfix/master.cf:/etc/postfix/master.cf
       - ./dovecot/dovecot.conf:/etc/dovecot/dovecot.conf
       - ./dovecot/conf.d:/etc/dovecot/conf.d
       - ./certs:/etc/ssl/certs/mail
       - ./vmail:/var/mail/vmail
       - mailserver-spool:/var/spool/postfix
       - mailserver-logs:/var/log
     environment:
       - DOMAIN=example.com
       - HOSTNAME=mail.example.com
     restart: unless-stopped
     command: |
       /bin/bash -c "apt update && \
       apt install -y postfix dovecot-imapd dovecot-pop3d supervisor && \
       /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf"
 
 volumes:
   mailserver-spool:
   mailserver-logs:


Composeファイルを実行して、コンテナを作成および実行する。

podman-compose up -d
# または
podman-compose -f <Composeファイル名> up -d



Postfix設定ファイル

main.cf

postfix/main.cfファイルを作成する。

 # 基本設定
 myhostname = mail.example.com
 mydomain = example.com
 myorigin = $mydomain
 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
 relayhost =
 mynetworks = 127.0.0.0/8, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
 inet_interfaces = all
 inet_protocols = ipv4
 
 # メールボックス設定
 home_mailbox = Maildir/
 mailbox_command =
 
 # SASL認証設定(Dovecot経由)
 smtpd_sasl_type = dovecot
 smtpd_sasl_path = private/auth
 smtpd_sasl_auth_enable = yes
 smtpd_sasl_security_options = noanonymous
 smtpd_sasl_local_domain = $mydomain
 broken_sasl_auth_clients = yes
 
 # TLS設定
 smtpd_use_tls = yes
 smtpd_tls_cert_file = /etc/ssl/certs/mail/mail.crt
 smtpd_tls_key_file = /etc/ssl/certs/mail/mail.key
 smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
 smtpd_tls_security_level = may
 smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
 smtpd_tls_ciphers = high
 smtpd_tls_mandatory_ciphers = high
 
 # セキュリティ設定
 smtpd_recipient_restrictions =
     permit_mynetworks,
     permit_sasl_authenticated,
     reject_unauth_destination,
     reject_invalid_hostname,
     reject_non_fqdn_sender,
     reject_non_fqdn_recipient,
     reject_unknown_sender_domain,
     reject_unknown_recipient_domain
 
 # バーチャルメールボックス設定
 virtual_mailbox_domains = example.com
 virtual_mailbox_base = /var/mail/vmail
 virtual_mailbox_maps = hash:/etc/postfix/vmailbox
 virtual_minimum_uid = 1000
 virtual_uid_maps = static:5000
 virtual_gid_maps = static:5000
 virtual_alias_maps = hash:/etc/postfix/virtual


master.cf

postfix/master.cfファイルに、SMTP Submissionポート (587番) の設定を追加する。

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING


バーチャルメールボックスの設定

postfix/vmailboxファイルを作成して、仮想メールボックスを定義する。

 user1@example.com    example.com/user1/
 user2@example.com    example.com/user2/
 info@example.com     example.com/info/


ハッシュデータベースを生成する。

postmap /etc/postfix/vmailbox
postmap /etc/postfix/virtual



Dovecot設定ファイル

dovecot.conf

dovecot/dovecot.confファイルを作成する。

 protocols = imap pop3 lmtp
 listen = *, ::
 base_dir = /var/run/dovecot/
 instance_name = dovecot
 
 !include conf.d/*.conf
 !include_try local.conf


認証設定 (10-auth.conf)

dovecot/conf.d/10-auth.confファイルを作成する。

disable_plaintext_auth = yes
auth_mechanisms = plain login

passdb {
  driver = passwd-file
  args = scheme=CRYPT username_format=%u /etc/dovecot/users
}

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/vmail/%u
}


メールボックス設定 (10-mail.conf)

dovecot/conf.d/10-mail.confファイルを作成する。

mail_location = maildir:/var/mail/vmail/%u
namespace inbox {
  inbox = yes
}
mail_privileged_group = mail
first_valid_uid = 5000
last_valid_uid = 5000
first_valid_gid = 5000
last_valid_gid = 5000


サービス設定 (10-master.conf)

dovecot/conf.d/10-master.confファイルを作成して、Postfix用のSASL認証ソケットを設定する。

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}

service imap-login {
  inet_listener imap {
    port = 0
  }
  inet_listener imaps {
    port = 993
    ssl = yes
  }
}

service pop3-login {
  inet_listener pop3 {
    port = 0
  }
  inet_listener pop3s {
    port = 995
    ssl = yes
  }
}


SSL/TLS設定 (10-ssl.conf)

dovecot/conf.d/10-ssl.confファイルを作成する。

 ssl = required
 ssl_cert = </etc/ssl/certs/mail/mail.crt
 ssl_key = </etc/ssl/certs/mail/mail.key
 ssl_min_protocol = TLSv1.2
 ssl_cipher_list = HIGH:!aNULL:!MD5
 ssl_prefer_server_ciphers = yes
 ssl_dh = </etc/dovecot/dh.pem



SSL / TLS証明書

自己署名証明書の作成

テスト環境用に自己署名証明書を作成する例を以下に示す。

mkdir -p ./certs


openssl req -x509 -nodes -days 365 -newkey rsa:4096 \
  -keyout ./certs/mail.key \
  -out ./certs/mail.crt \
  -subj "/C=JP/ST=Tokyo/L=Tokyo/O=MyCompany/CN=mail.example.com"


chmod 600 ./certs/mail.key
chmod 644 ./certs/mail.crt


Diffie-Hellmanパラメータの生成

Dovecotで使用するDHパラメータを生成する。

openssl dhparam -out ./dovecot/dh.pem 2048


Let's Encrypt証明書の使用

本番環境では、Let's Encryptを使用した正規の証明書を取得することを推奨する。

certbot certonly --standalone -d mail.example.com


# 証明書をコピー
cp /etc/letsencrypt/live/mail.example.com/fullchain.pem ./certs/mail.crt
cp /etc/letsencrypt/live/mail.example.com/privkey.pem ./certs/mail.key



ユーザ管理

ユーザーの追加

Dovecotのusersファイルにユーザーを追加する。パスワードハッシュはdoveadmコマンドで生成する。

# コンテナ内でパスワードハッシュを生成
podman exec -it mailserver doveadm pw -s SHA512-CRYPT

# Enter new password: (パスワードを入力)
# Retype new password: (パスワードを再入力)
# {SHA512-CRYPT}$6$...


dovecot/usersファイルに生成したハッシュを追加する。

 user1@example.com:{SHA512-CRYPT}$6$...
 user2@example.com:{SHA512-CRYPT}$6$...
 info@example.com:{SHA512-CRYPT}$6$...


メールボックスディレクトリの作成

ユーザごとのメールボックスディレクトリを作成する。

mkdir -p ./vmail/example.com/user1
mkdir -p ./vmail/example.com/user2
mkdir -p ./vmail/example.com/info

chown -R 5000:5000 ./vmail


ユーザの削除

usersファイルから該当行を削除して、メールボックスディレクトリを削除する。

# usersファイルから削除
sed -i '/user1@example.com/d' dovecot/users

# メールボックスディレクトリを削除
rm -rf ./vmail/example.com/user1



メールの送受信

SMTP接続テスト

telnetコマンドを使用してSMTP接続をテストする。

telnet mail.example.com 25


以下に示すコマンドを順に入力する。

EHLO test.local
MAIL FROM:<sender@example.com>
RCPT TO:<user1@example.com>
DATA
Subject: Test Mail

This is a test message.
.
QUIT


SMTP Submission接続テスト (認証付き)

opensslコマンドを使用してSMTP Submissionポートへの接続をテストする。

openssl s_client -connect mail.example.com:587 -starttls smtp


接続後、以下に示すコマンドを入力する。

EHLO test.local
AUTH LOGIN
# Base64エンコードされたユーザ名とパスワードを入力


Base64エンコードは以下に示すコマンドで生成する。

echo -n 'user1@example.com' | base64
echo -n 'password' | base64


IMAP接続テスト

opensslコマンドを使用してIMAPS接続をテストする。

openssl s_client -connect mail.example.com:993


接続後、以下に示すコマンドを入力する。

a001 LOGIN user1@example.com password
a002 LIST "" "*"
a003 SELECT INBOX
a004 LOGOUT


POP3接続テスト

opensslコマンドを使用してPOP3S接続をテストする。

openssl s_client -connect mail.example.com:995

# 接続後、以下のコマンドを入力
USER user1@example.com
PASS password
LIST
RETR 1
QUIT


メールクライアントでの接続テスト

ThunderbirdやOutlook等どのメールクライアントで接続する場合の設定を以下に示す。

メールクライアント設定パラメータ
項目 受信サーバ (IMAP) 送信サーバ (SMTP)
サーバ名 mail.example.com mail.example.com
ポート番号 993 587
セキュリティ SSL / TLS STARTTLS
認証方式 通常のパスワード認証 通常のパスワード認証
ユーザー名 user1@example.com user1@example.com



ログの管理

Postfixログの確認

Postfixのログをリアルタイムで確認する。

podman exec mailserver tail -f /var/log/mail.log
# または
podman exec mailserver tail -f /var/log/syslog | grep postfix


特定のメールアドレスに関連するログを検索する。

podman exec mailserver grep "user1@example.com" /var/log/mail.log


Dovecotログの確認

Dovecotのログをリアルタイムで確認する。

podman exec mailserver tail -f /var/log/mail.log | grep dovecot


認証失敗のログを確認する。

podman exec mailserver grep "auth failed" /var/log/mail.log


コンテナログの確認

podman logsコマンドでコンテナ全体のログを確認する。

podman logs -f mailserver

# 最新100行のみ表示
podman logs --tail 100 mailserver

# タイムスタンプ付きで表示
podman logs -t mailserver


ログのローテーション設定

ログファイルが肥大化しないように、logrotateを設定する。

  • /etc/logrotate.d/mailserver ファイルの例
     /path/to/logs/mail.log {
        daily
        rotate 30
        compress
        delaycompress
        notifempty
        create 0640 syslog adm
        sharedscripts
        postrotate
           podman exec mailserver postfix reload
           podman exec mailserver doveadm reload
        endscript
     }
    



メールキューの管理

キュー内のメール一覧表示

キューに滞留しているメールを確認する。

podman exec mailserver postqueue -p


特定のメールをキューから削除

キューIDを指定してメールを削除する。

podman exec mailserver postsuper -d <キューID>


全てのメールをキューから削除する。

podman exec mailserver postsuper -d ALL


キューの再送信

キューに滞留しているメールを強制的に再送信する。

podman exec mailserver postqueue -f


保留中のメールの確認

保留 (hold) 状態のメールを確認する。

podman exec mailserver postqueue -p | grep -A 2 "^[A-F0-9]*\*"



セキュリティ設定

SPFレコードの設定

DNSにSPFレコードを追加して、送信元の正当性を検証する。

example.com.  IN  TXT  "v=spf1 ip4:203.0.113.10 ~all"


DKIMの設定

OpenDKIMを使用してメールに電子署名を付与する。

これは、OpenDKIMをコンテナに追加する。

# OpenDKIMのインストール
apt install -y opendkim opendkim-tools

# 鍵の生成
mkdir -p /etc/opendkim/keys/example.com
opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s mail

# DNSにTXTレコードを追加
cat /etc/opendkim/keys/example.com/mail.txt


DMARCレコードの設定

DNSにDMARCレコードを追加して、SPFとDKIMの検証結果を管理する。

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com"


接続制限の設定

Postfixで接続数とレート制限を設定する。

これは、main.cfに以下に示す設定を追加する。

 # 接続数制限
 smtpd_client_connection_count_limit = 10
 smtpd_client_connection_rate_limit = 30
 
 # メッセージサイズ制限
 message_size_limit = 10240000
 mailbox_size_limit = 102400000
 
 # レシピエント制限
 smtpd_recipient_limit = 100


アクセス制御リストの設定

特定のIPアドレスやドメインからのアクセスを制御する。

postfix/accessファイルを作成する。

# 許可するIPアドレス
192.168.1.0/24     OK
10.0.0.0/8         OK

# 拒否するドメイン
spam-domain.com    REJECT
bad-sender.net     REJECT


ハッシュデータベースを生成して、main.cfに設定を追加する。

postmap /etc/postfix/access


main.cfに追加する設定を以下に示す。

smtpd_client_restrictions =
    check_client_access hash:/etc/postfix/access,
    permit_mynetworks,
    reject_unknown_client_hostname



スパムフィルタの設定

SpamAssassinを使用して、スパムメールをフィルタリングする。

SpamAssassinのインストール

コンテナ内にSpamAssassinをインストールする。

apt install -y spamassassin spamc


SpamAssassinの設定

/etc/default/spamassassinファイルを編集して、SpamAssassinを有効化する。

ENABLED=1
SPAMD_HOME="/var/lib/spamassassin/"
OPTIONS="--create-prefs --max-children 5 --username spamd --helper-home-dir ${SPAMD_HOME} -s ${SPAMD_HOME}spamd.log"


Postfixとの連携

master.cfにSpamAssassinの設定を追加する。

smtp      inet  n       -       y       -       -       smtpd
  -o content_filter=spamassassin

spamassassin unix -     n       n       -       -       pipe
  user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}



バックアップと復元

メールボックスのバックアップ

vmailディレクトリをtarで圧縮してバックアップする。

tar Jcf mailbox-backup-$(date +%Y%m%d).tar.xz -C ./vmail .


設定ファイルのバックアップ

設定ファイルをまとめてバックアップする。

tar Jcf config-backup-$(date +%Y%m%d).tar.xz postfix/ dovecot/ certs/


メールボックスの復元

バックアップからメールボックスを復元する。

tar xf mailbox-backup-20250107.tar.xz -C ./vmail
chown -R 5000:5000 ./vmail


定期バックアップスクリプト

Cronで定期的にバックアップを実行することもできる。

 #!/usr/bin/env sh
 
 BACKUP_DIR="/backup/mailserver"
 DATE=$(date +%Y%m%d_%H%M%S)
 
 mkdir -p ${BACKUP_DIR}
 
 # メールボックスのバックアップ
 tar Jcf ${BACKUP_DIR}/vmail-${DATE}.tar.xz -C /path/to/vmail .
 
 # 設定ファイルのバックアップ
 tar Jcf ${BACKUP_DIR}/config-${DATE}.tar.xz postfix/ dovecot/ certs/
 
 # 古いバックアップの削除 (30日以上前)
 find ${BACKUP_DIR} -name "*.tar.gz" -mtime +30 -delete



パフォーマンスチューニング

Postfixの同時接続数設定

main.cfファイルを編集して、同時接続数を調整する。

 # デフォルトのプロセス数
 default_process_limit = 100
 
 # SMTPデーモンのプロセス数
 smtpd_client_connection_count_limit = 50
 
 # 配信プロセスの数
 maximal_queue_lifetime = 5d
 bounce_queue_lifetime = 5d


Dovecotのプロセス数設定

10-master.confファイルを編集して、プロセス数を調整する。

service imap-login {
  process_min_avail = 4
  process_limit = 100
}

service pop3-login {
  process_min_avail = 2
  process_limit = 50
}

service auth {
  process_limit = 100
}


メールボックスキャッシュの設定

Dovecotのキャッシュ設定を最適化する。

これは、10-mail.confファイルに設定を追加する。

 mail_cache_min_mail_count = 10
 mailbox_list_index = yes
 mail_location = maildir:/var/mail/vmail/%u:LAYOUT=fs


ディスクI/O最適化

メールボックスのディスクI/Oを最適化する。

 # Postfixのキュー配置最適化
 queue_directory = /var/spool/postfix
 
 # Dovecotのインデックスファイル配置
 mail_location = maildir:/var/mail/vmail/%u:INDEX=/var/indexes/%u



トラブルシューティング

コンテナが起動しない

設定ファイルの構文エラーを確認する。

# Postfixの設定確認
podman exec mailserver postfix check

# Dovecotの設定確認
podman exec mailserver doveconf -n

# コンテナログの確認
podman logs mailserver


メール送信ができない

SMTP接続とSASL認証を確認する。

# SMTP接続テスト
telnet mail.example.com 25

# SASL認証機構の確認
podman exec mailserver postconf -n | grep sasl

# Dovecot認証ソケットの確認
podman exec mailserver ls -la /var/spool/postfix/private/auth


メール受信ができない

メールボックスのパーミッションとDovecotの設定を確認する。

# メールボックスのパーミッション確認
ls -la ./vmail

# Dovecotのユーザー設定確認
podman exec mailserver doveadm user user1@example.com

# Dovecotログの確認
podman exec mailserver grep dovecot /var/log/mail.log


認証エラー

ユーザ設定とパスワードハッシュを確認する。

# usersファイルの確認
cat dovecot/users

# パスワードハッシュの再生成
podman exec -it mailserver doveadm pw -s SHA512-CRYPT

# 認証テスト
podman exec mailserver doveadm auth test user1@example.com


TLS/SSL接続エラー

証明書とTLS設定を確認する。

# 証明書の有効性確認
openssl x509 -in ./certs/mail.crt -text -noout

# TLS接続テスト
openssl s_client -connect mail.example.com:587 -starttls smtp

# Postfixの証明書設定確認
podman exec mailserver postconf | grep tls


メールキューの滞留

キューに滞留しているメールの原因を調査する。

# キューの状態確認
podman exec mailserver postqueue -p

# 特定のメールの詳細確認
podman exec mailserver postcat -q <キューID>

# ログでエラーを確認
podman exec mailserver grep "status=deferred" /var/log/mail.log


ポート番号の競合

他のサービスとポート番号が競合している場合、別のポートを使用する。

# 使用中のポート確認
netstat -tuln | grep -E ':(25|587|993|995)'

# 別ポートで起動
podman run -d --name mailserver -p 0.0.0.0:2525:25 -p 0.0.0.0:2587:587 mailserver:custom



ファイヤーウォールの設定

同一ネットワーク上の外部PCからアクセスする場合は、ファイヤーウォールのポート開放を行う。

Linux

# Firewalldを使用している場合
sudo firewall-cmd --permanent --add-service=smtp
sudo firewall-cmd --permanent --add-service=smtp-submission
sudo firewall-cmd --permanent --add-service=imaps
sudo firewall-cmd --permanent --add-service=pop3s
sudo firewall-cmd --reload

# またはポート番号で指定
sudo firewall-cmd --permanent --add-port=25/tcp
sudo firewall-cmd --permanent --add-port=587/tcp
sudo firewall-cmd --permanent --add-port=993/tcp
sudo firewall-cmd --permanent --add-port=995/tcp
sudo firewall-cmd --reload

# UFWを使用している場合
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 993/tcp
sudo ufw allow 995/tcp


Windows 11

PowerShellを管理者権限で起動して、以下に示すコマンドを実行する。

SMTPポートの受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mail SMTP" -Direction Inbound -Protocol TCP -LocalPort 25 -Action Allow


SMTP Submissionポートの受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mail SMTP Submission" -Direction Inbound -Protocol TCP -LocalPort 587 -Action Allow


IMAPSポートの受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mail IMAPS" -Direction Inbound -Protocol TCP -LocalPort 993 -Action Allow


POP3Sポートの受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mail POP3S" -Direction Inbound -Protocol TCP -LocalPort 995 -Action Allow


正常にポート開放が行われているかどうかを確認する場合、別PCからPowerShellを起動して、以下に示すコマンドを実行する。

Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 25
Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 587
Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 993
Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 995


ファイアウォールルールを削除する場合は、以下に示すコマンドを実行する。

Remove-NetFirewallRule -DisplayName "Mail SMTP" -ErrorAction SilentlyContinue
Remove-NetFirewallRule -DisplayName "Mail SMTP Submission" -ErrorAction SilentlyContinue
Remove-NetFirewallRule -DisplayName "Mail IMAPS" -ErrorAction SilentlyContinue
Remove-NetFirewallRule -DisplayName "Mail POP3S" -ErrorAction SilentlyContinue


Windows 10

PowerShellを管理者権限で起動して、以下に示すコマンドを実行する。

SMTPポートの受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mail SMTP" -Direction Inbound -Protocol TCP -LocalPort 25 -Action Allow


SMTP Submissionポートの受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mail SMTP Submission" -Direction Inbound -Protocol TCP -LocalPort 587 -Action Allow


IMAPSポートの受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mail IMAPS" -Direction Inbound -Protocol TCP -LocalPort 993 -Action Allow


POP3Sポートの受信ルールを追加する。

New-NetFirewallRule -DisplayName "Mail POP3S" -Direction Inbound -Protocol TCP -LocalPort 995 -Action Allow


正常にポート開放が行われているかどうかを確認する場合、別のPCからPowerShellを起動して、以下に示すコマンドを実行する。

Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 25
Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 587
Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 993
Test-NetConnection -ComputerName <Windows PCのIPアドレス> -Port 995


ファイアウォールルールを削除する場合は、以下に示すコマンドを実行する。

Remove-NetFirewallRule -DisplayName "Mail SMTP" -ErrorAction SilentlyContinue
Remove-NetFirewallRule -DisplayName "Mail SMTP Submission" -ErrorAction SilentlyContinue
Remove-NetFirewallRule -DisplayName "Mail IMAPS" -ErrorAction SilentlyContinue
Remove-NetFirewallRule -DisplayName "Mail POP3S" -ErrorAction SilentlyContinue