VPSでメールサーバーを構築してみた(Postfix編)

VPSでメールサーバーを構築してメールの送受信をしてみようと思います。
後述の前提条件にもあります通り、PostfixとDovecotを使いますが今回はPostfixについて記事にしたいと思います。

既存のメールサーバーを使う方法についてはこちらをご覧ください。

あわせて読みたい
LightsailからSimple Email Service(SES)経由でメールを送ってみた Lightsailインスタンスはpostfixを動かしてもメールを送ることができないようです。 「数通だったら送れた」という情報も見受けられますが、うちで試したところ1通も送...
あわせて読みたい
VPSで外部のメールサーバーを使う方法 レンタルサーバーで動かしていたWordPressをVPSに移行しました。 メールサーバーもVPSに移す予定なのですが、今はまだレンタルサーバーを契約したときについてきたメー...
目次

前提条件

  • OSはCentOS Stream 8であること
  • PostfixとDovecotをインストール済みであること
  • DNSのMXレコードが設定済みであること
  • メールサーバーに割り当てるドメインのSSL証明書が取得済みであること

構築手順

  1. main.cfの修正
    /etc/postfixにあるmain.cfの下記項目を追加・修正します。

    inet_interfaces = all
    message_size_limit = 10485760
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    mydomain = {ドメイン名}
    myhostname = {メールサーバーのホスト名}
    mynetworks_style = host
    myorigin = $mydomain
    smtpd_banner = $myhostname ESMTP unknown
    smtpd_client_restrictions = permit_mynetworks,permit
    smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_path = private/auth
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_type = dovecot
    smtpd_sender_restrictions = reject_unknown_sender_domain
    smtpd_tls_cert_file = {SSL証明書をフルパスで記載}
    smtpd_tls_key_file = {SSL証明書(秘密鍵)をフルパスで記載}
    smtpd_tls_loglevel = 1
    smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5, RC4
    smtpd_tls_mandatory_protocols = !SSLv3, !SSLv2
    smtpd_tls_received_header = yes
    smtpd_tls_security_level = may
    smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
    smtpd_tls_session_cache_timeout = 3600s
    smtpd_use_tls = yes
  2. master.cfの修正
    /etc/postfixにあるmaster.cfの下記項目を追加・修正します。

    #submission inet n - n - - smtpd → submission inet n - n - - smtpd
    # -o smtpd_tls_security_level=encrypt → -o smtpd_tls_security_level=encrypt
    # -o smtpd_sasl_auth_enable=yes → -o smtpd_sasl_auth_enable=yes
    # -o smtpd_client_restrictions=$mua_client_restrictions → -o smtpd_client_restrictions=permit_sasl_authenticated,reject
    # -o milter_macro_daemon_name=ORIGINATING → -o milter_macro_daemon_name=ORIGINATING
    (冒頭の#を削除、smtpd_client_restrictionsについては内容も修正)
    
    #smtps inet n - n - - smtpd → smtps inet n - n - - smtpd
    # -o smtpd_tls_wrappermode=yes → -o smtpd_tls_wrappermode=yes
    # -o smtpd_sasl_auth_enable=yes → -o smtpd_sasl_auth_enable=yes
    (冒頭の#を削除)
  3. ファイアウォールの設定
    ファイアウォールを有効にしている場合は下記のポートを開けてください。
    ・25/tcp
    ・465/tcp
    ・587/tcp
  4. 自動起動設定と起動
    下記コマンドを実行して自動起動するように設定をして、起動します。

    sudo systemctl enable postfix
    sudo systemctl start postfix

メールアドレスの追加

メールアドレスの追加はadduserコマンドでユーザーを追加することで行います。

#メールアドレスとしてのみ使う場合
sudo adduser -s /sbin/nologin {ユーザー名}

#通常のユーザーとしても使う場合
sudo adduser -s /bin/bash {ユーザー名}

#メールボックスを作成する
sudo mkdir -p /home/{ユーザー名}/Maildir/{cur,new,tmp}

まとめ

以上でPostfixの設定は完了です。

送信時の認証にDovecotを使用しているのでDovecotが正常に稼働していない場合はメールの送信ができません。

この記事がPostfixを使おうとしている方の参考になれば幸いです。

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次