サブドメイン上の受信メール用にメールサーバーを設定し、PHP スクリプトをトリガーする

サブドメイン上の受信メール用にメールサーバーを設定し、PHP スクリプトをトリガーする

メインドメインのサブドメインにある特定のアカウントへのメールを受信できるように、会社のサーバーを設定しようとしています。[メールアドレス]

これらの受信メーラーは、コンテンツ処理を実行する PHP スクリプトをトリガーする必要があります。

私はUbuntu Server 20.0.4を実行しており、PostfixとDovecotがインストールされています。また、courierも使用してみましたが、うまくいきませんでした。

ここまで来ました:

  • Linuxユーザーを作成し、ローカルアカウントを有効なメールボックスとして使用するようにpostfixを設定しました
  • postfixをsubdomain.domain.comで受信メールを受け入れるように設定しました
  • Googleドメインを適切にルーティングするためにサブドメインのAレコードとMXレコードを追加しました
  • サブドメインに SSL を設定しました (サブドメインに移動すると、ssllabs および Apache で正常に動作することが確認されました)
  • PHP スクリプトをトリガーするために、/etc/postfix/master.cf にいくつかの追加構成を追加しました (現時点では単なるテスト スクリプト/プレースホルダーです)。
    smtp      inet  n       -       -       -       -       smtpd
        -o content_filter=myhook:dummy
    ...
    # PHP SCRIPT HOOK
        myhook unix - n n - - pipe
          flags=F user=www-data argv=/path/to/script/MailParser.php ${sender} ${size} ${recipient}   

timestampMailParser.php スクリプトは、単に「受信メールを正常に受信しました」というログ ファイルに書き込みをトリガーします。

これらの設定でsmtper.net経由でメールを送信すると

ログへの書き込みスクリプトが正常にトリガーされ、ユーザーのシステムメールに smtper.net からの「テスト」メッセージが表示されるので、すべて正常なようです。

ただし、Gmail アカウントなどの通常のメール クライアントからメールを送信しようとすると、次のエラーが発生して配信不能として返送されます。

550 5.1.1 連絡しようとしたメールアカウントは存在しません。受信者のメールアドレスに誤字や不要なスペースがないか再度確認してください。詳細については、https://support.google.com/mail/?p=NoSuchUserf16si1842833plj.1 - gsmtp

この時点で行き詰まっています。

答え1

@anx が指摘したように、問題は MX レコードにあることが判明しました。さらに、ドメインの SSL 証明書が完全に構成されていなかったため、これも問題を引き起こしていました。それ以外は、ローカル サーバーの構成は正しく設定されていました。

関連情報