Xserver 無料プランで Postfix を使う - Ubuntu

  • 作成日:
  • 最終更新日:2025/10/11

Xserver VPS の無料プラン

Xserver VPS の無料プランの場合 OP25B(Outbound Port25 Blocking)の設定が常時されているため、自分で作成したメールアドレスで送信することができません。

そのため、Gmailの SMTP サーバーなど外部のメールサーバーを利用してメールを送信する必要があります。

Gmail を利用する場合、2段階認証の設定とアプリパスワードの作成が必要になります。

ファイアウォールでポート587が開放されている必要があります。

Postfix の設定

メインの設定ファイルは以下のように設定します。

/etc/postfix/main.cf

compatibility_level = 3.9

myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
inet_protocols = all

mynetworks_style = host
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

# ここで受信対象のドメインを明示
mydestination = $myhostname, localhost.$mydomain, localhost

mailbox_size_limit = 0
mailbox_command =

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

biff = no
recipient_delimiter = +

relayhost = [smtp.gmail.com]:587

cyrus_sasl_config_path = /etc/postfix/sasl

smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_security_level = may

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_security_level = encrypt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

inet_interfaces = all

# SMTP認証を有効化
smtp_sasl_auth_enable = yes
# 認証情報のマップファイル指定
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# 匿名認証を禁止
smtp_sasl_security_options = noanonymous

/etc/postfix/sasl_passwdに Gmail の認証情報を記述します。

/etc/postfix/sasl_passwd

[smtp.gmail.com]:587    yourgmail@gmail.com:your_app_password

yourgmail@gmail.comは、送信用に利用する Gmail を設定します

your_app_passwordは、アプリパスワードを設定します。

マップファイル作成とパーミッション設定を行います。

sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

※Postfixにおける「マップファイル(map file)」とは、キーと値の組み合わせで情報を管理し、Postfixが設定や処理で参照するデータベースのことを指します。

テスト

echo "test" | mail -s "test subject" youraddress@gmail.com
sudo tail -f /var/log/mail.log

ログにstatus=sent (250 2.0.0 OK ...)が出ていれば送信されています。

エラー

connect to gmail-smtp-in.l.google.com[2404:6800:4008:c01::1b]:25: Network is unreachable

上記のエラーは、Postfix は Gmail の受信サーバーに IPv6 アドレス で接続しようとしたが、このサーバーは IPv6 が使えないため、Network is unreachable で失敗という内容です。

Postfix の設定で IPv4 のみを使うようにします。

sudo postconf -e "inet_protocols = ipv4"
sudo systemctl restart postfix

# 設定を確認
# → inet_protocols = ipv4 になっていればOK
postconf inet_protocols

postconfは、Postfixの設定ファイル(主に /etc/postfix/main.cf)を読み書きする管理ツールです。-e オプションをつけると指定した設定パラメータを編集します。

  • unreachable(アンリーチアブル):到達不可能な