質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • PHP

    20288questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CentOS

    2697questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Postfix

    266questions

    Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

  • メール

    255questions

    メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Postfixにて空メール登録システム登録はOKだが、メールが受信できない。

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 881
退会済みユーザー

退会済みユーザー

PHPで空メール登録システムを作成しています。
Postfixで、設定したメールアドレスにメールを受信すると、PHPを起動させて登録案内メールが送信されます。

この空メール登録システムは出来上がりましたが、その代償として、サイトのドメインのメールアドレスでメールが受信できなくなってしまいました。

(例)今回のサイトのドメイン・・・example.com
・メールアドレスを作成
info@example.com
entry@example.com ・・・空メール受信用として作成
・空メール機能を実装前は、上記メールアドレスにて送信・受信ともOK(メーラー使用)
・空メール機能を実装(Postfix関連ファイルを設定〜再起動)
・entry@example.comに空メール送信〜PHP起動OK(entry.php)
・メーラーにて、info@example.comにメール送信・・・送信NG、デーモンエラーメール
あり(幾つか作成したメールアドレスによってエラー内容が違う 2パターン確認)

①Host not found
②unknown user: "info"

(環境)
GMOクラウドVPS 2G
Cent OS 7.2 (Plesk 12.5)
MTA:Postfix
php5.4.16

(空メール登録システム構築の上で行なったPostfix関連ファイルの設定)
●/etc/postfix/main.cf

myhostname = sv.example.com ・・・Pleskでの「フルホスト名」
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

smtpd_banner = $myhostname ESMTP unknown
disable_vrfy_command = yes
smtpd_helo_required = yes
mynetworks = *.*../28, 127.0.0.0/8 ※IPアドレスを適応

●/etc/aliases
entry: "| /usr/bin/php /var/www/vhosts/example.com/httpdocs/entry.php"

(設定の反映 ※コマンド)

 newaliases

(空メール受信のアカウント作成 コマンド)
$ sudo useradd -s /sbin/nologin -M entry

Postfix再起動

●空メールシステムは正常に稼働します。
●ドメインのメールが受信できません。(メーラーの他、PleskよりWebメールも確認)
※デーモンからのエラーメールが来ます。

(確認事項) Postfix main.cf
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

上記を、デフォルトの値にすると、今度はメールは受信できるが、空メール送信でPHPが実行されなくなります。

(上記のデフォルト値)
mydestination = $myhostname, localhost.$mydomain, localhost

上記のような状況となっており、困っております。
ご教示頂けましたら誠に幸いです。
よろしくお願い致します。

「postconf -n」を実行して出力される内容を追記

[root@sv ~]# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases, hash:/var/spool/postfix/plesk/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
disable_vrfy_command = yes
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailbox_size_limit = 0
mailman_destination_recipient_limit = 1
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 10240000
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = example.com
myhostname = sv.example.com
mynetworks =
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
plesk_virtual_destination_recipient_limit = 1
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sender_dependent_default_transport_maps = hash:/var/spool/postfix/plesk/sdd_transport_maps
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_send_xforward_command = yes
smtp_tls_security_level = may
smtp_use_tls = no
smtpd_authorized_xforward_hosts = 127.0.0.0/8 [::1]/128
smtpd_banner = $myhostname ESMTP unknown
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_helo_required = yes
smtpd_milters = , inet:127.0.0.1:12768
smtpd_proxy_timeout = 3600s
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sender_restrictions = check_sender_access hash:/var/spool/postfix/plesk/blacklists, permit_sasl_authenticated
smtpd_timeout = 3600s
smtpd_tls_cert_file = /etc/postfix/postfix_default.pem
smtpd_tls_ciphers = medium
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_protocols = TLSv1 TLSv1.1 TLSv1.2
smtpd_tls_protocols = TLSv1 TLSv1.1 TLSv1.2
smtpd_tls_security_level = may
smtpd_use_tls = yes
tls_medium_cipherlist = HIGH:!aNULL:!MD5
transport_maps = , hash:/var/spool/postfix/plesk/transport
unknown_local_recipient_reject_code = 550
virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual
virtual_gid_maps = static:31
virtual_mailbox_base = /var/qmail/mailnames
virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains
virtual_mailbox_limit = 0
virtual_mailbox_maps = , hash:/var/spool/postfix/plesk/vmailbox
virtual_transport = plesk_virtual
virtual_uid_maps = static:30

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ikedas

    2017/02/06 20:51

    「postconf -n」を実行して出力される内容を提示して下さい。ドメイン名やIPアドレスは「example.com」や「xxx.xxx.xxx.xxx」といったふうにマスクしていただいて結構です。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/02/06 21:35 編集

    ご連絡、ありがとうございました。テラテイルの使い方もまだわかっていないのですが、ペーストさせていただきます。[root@sv ~]# postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases, hash:/var/spool/postfix/plesk/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 disable_vrfy_command = yes html_directory = no inet_interfaces = all inet_protocols = all mail_owner = postfix mailbox_size_limit = 0 mailman_destination_recipient_limit = 1 mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man message_size_limit = 10240000 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mydomain = example.com myhostname = sv.example.com mynetworks = myorigin = $mydomain newaliases_path = /usr/bin/newaliases.postfix plesk_virtual_destination_recipient_limit = 1 queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES sample_directory = /usr/share/doc/postfix-2.10.1/samples sender_dependent_default_transport_maps = hash:/var/spool/postfix/plesk/sdd_transport_maps sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop smtp_send_xforward_command = yes smtp_tls_security_level = may smtp_use_tls = no smtpd_authorized_xforward_hosts = 127.0.0.0/8 [::1]/128 smtpd_banner = $myhostname ESMTP unknown smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated smtpd_helo_required = yes smtpd_milters = , inet:127.0.0.1:12768 smtpd_proxy_timeout = 3600s smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sender_restrictions = check_sender_access hash:/var/spool/postfix/plesk/blacklists, permit_sasl_authenticated smtpd_timeout = 3600s smtpd_tls_cert_file = /etc/postfix/postfix_default.pem smtpd_tls_ciphers = medium smtpd_tls_key_file = $smtpd_tls_cert_file smtpd_tls_mandatory_ciphers = medium smtpd_tls_mandatory_protocols = TLSv1 TLSv1.1 TLSv1.2 smtpd_tls_protocols = TLSv1 TLSv1.1 TLSv1.2 smtpd_tls_security_level = may smtpd_use_tls = yes tls_medium_cipherlist = HIGH:!aNULL:!MD5 transport_maps = , hash:/var/spool/postfix/plesk/transport unknown_local_recipient_reject_code = 550 virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual virtual_gid_maps = static:31 virtual_mailbox_base = /var/qmail/mailnames virtual_mailbox_domains = $virtual_mailbox_maps, hash:/var/spool/postfix/plesk/virtual_domains virtual_mailbox_limit = 0 virtual_mailbox_maps = , hash:/var/spool/postfix/plesk/vmailbox virtual_transport = plesk_virtual virtual_uid_maps = static:30 [root@sv ~]#

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2017/02/06 21:37

    ちょっと、改行の反映もされていない状況で申し訳ありません。ファイルの添付などができればいいのですが、すみません・・。

    キャンセル

  • ikedas

    2017/02/06 21:57

    質問は編集できますので、そっちに追記していただくといいと思います。

    キャンセル

回答 1

+2

もともと example.com を virtual (virtual_mailbox_maps) で処理していたものを、"|command" を使いたいために、local で処理するように変更した(mydestination に $mydomain を追加した、あるいは、$mydomain = example.com に変更した)のではないでしょうか?
local で受信するためには OSユーザーとして info ユーザーを作成する必要がありますが、そうすると、Plesk や POP, IMAP ソフトウェアと合わなくなってしまうと思います。

もし、もともと virtual で処理していたのであれば、以下のような設計、設定はできませんでしょうか?

  • example.com を virtual で扱うように設定を戻す。info@example.com を受信できるようになる。
  • virtual_alias_maps で entry@example.com → entry@sv.example.com に転送する。(hash:/var/spool/postfix/plesk/virtual のパスを見ると、Plesk で設定できるように思います。)
  • sv.example.com は mydestination に含まれるので、local 扱いとなり、/etc/aliases で "|command" に渡すことができる。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/02/07 14:13

    ご回答ありがとうございました。
    頂いた内容で調査させていただきます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20288questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CentOS

    2697questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Postfix

    266questions

    Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

  • メール

    255questions

    メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。