Postfix, отправляющий письмо в скрипт, не передает содержимое письма в скрипт - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть базовая реализация канала postfix, где входящая электронная почта на определенный адрес электронной почты передается в сценарий PHP.Эта реализация работала хорошо в течение 2 лет с Ubuntu 14.04 с Apache2 и PHP 5.6.Недавно я выполнил 'do-release-upgrade' на сервере и перешел на Ubuntu 16.04 с nginx PHP7.1-FPM.После этого мой постфиксный сервер все еще работает и обычно отправляет электронную почту и получает с dovecot, но конвейер не получает содержимое электронной почты.

Всякий раз, когда электронное письмо отправляется на этот скрипт, его содержимое пусто

Вот моя постфиксная конфигурация main.cf:

default_privs=www-data
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

append_dot_mydomain = no

readme_directory = no


smtpd_tls_cert_file = /etc/ssl/certs/server.crt
smtpd_tls_key_file = /etc/ssl/private/server.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname =pakistanplacement.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = mydomainname.com, localhost.localdomain,localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

home_mailbox = Maildir/
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
#smtpd_recipient_restrictions =check_recipient_access hash:/etc/postfix/access,permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_recipient_restrictions =permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes

milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Вот мое содержимое файла / etc / aliases:

postmaster:    root
upload: "|/var/www/public_html/production/parser/index.php"

Что не так?Я перезапустил postfix, dovecot после обновления Ubuntu.Также запустил newaliases, но все еще ошибка остается той же.

Вот содержимое моего index.php, куда направляется электронная почта:

$contents='';
$handle = fopen("php://stdin", "r");

while (!feof($handle)) {
    $contents .= fread($handle, 8192);
}
fclose($handle);

$contents;//This contents variable always is empty string ''
...