2015-04-12 88 views
4

我需要認真的幫助。我的Postfix收到郵件時未能觸發我的PHP腳本

我在ubuntu 14.04.1上運行Postfix郵件。

我想「在Postfix服務器收到郵件時觸發一個PHP腳本」經過調查和許多tuto的幫助,。我已經第一次配置了「postfix」&「Postfix virtual Aliases」(我對它沒有深入的瞭解),我寫了我的php代碼,但是我的腳本輸出總是空的。在所有必要的文件下面,您可以檢測到我的錯誤。

main.cf

# See /usr/share/postfix/main.cf.dist for a commented, more complete version 


# Debian specific: Specifying a file name will cause the first 
# line of that file to be used as the name. The Debian default 
# is /etc/mailname. 
#myorigin = /etc/mailname 

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) 
biff = no 

# appending .domain is the MUA's job. 
append_dot_mydomain = no 

# Uncomment the next line to generate "delayed mail" warnings 
#delay_warning_time = 4h 

readme_directory = no 

# TLS parameters 
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem 
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.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 

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for 
# information on enabling SSL in the smtp client. 

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination 
myhostname = localhost 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
myorigin = /etc/mailname 
mydestination = domain1.com, panawara.org, panawaredev-MS-7788, localhost.localdomain, localhost 
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
mailbox_size_limit = 0 
recipient_delimiter = + 
inet_interfaces = all 
inet_protocols = all 
home_mailbox = Maildir/ 
virtual_mailbox_domains = /etc/postfix/vhosts 
virtual_mailbox_base = /home/vmail 
virtual_mailbox_maps = hash:/etc/postfix/vmaps 
virtual_minimum_uid = 1000 
virtual_uid_maps = static:5000 
virtual_gid_maps = static:5000 

master.cf

# 
# Postfix master process configuration file. For details on the format 
# of the file, see the master(5) manual page (command: "man 5 master" or 
# on-line: http://www.postfix.org/master.5.html). 
# 
# Do not forget to execute "postfix reload" after editing this file. 
# 
# ========================================================================== 
# service type private unpriv chroot wakeup maxproc command + args 
#    (yes) (yes) (yes) (never) (100) 
# ========================================================================== 

#smtp  inet n  -  -  -  1  postscreen 
#smtpd  pass -  -  -  -  -  smtpd 
#dnsblog unix -  -  -  -  0  dnsblog 
#tlsproxy unix -  -  -  -  0  tlsproxy 
#submission inet n  -  -  -  -  smtpd 
# -o syslog_name=postfix/submission 
# -o smtpd_tls_security_level=encrypt 
# -o smtpd_sasl_auth_enable=yes 
# -o smtpd_reject_unlisted_recipient=no 
# -o smtpd_client_restrictions=$mua_client_restrictions 
# -o smtpd_helo_restrictions=$mua_helo_restrictions 
# -o smtpd_sender_restrictions=$mua_sender_restrictions 
# -o smtpd_recipient_restrictions= 
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject 
# -o milter_macro_daemon_name=ORIGINATING 
#smtps  inet n  -  -  -  -  smtpd 
# -o syslog_name=postfix/smtps 
# -o smtpd_tls_wrappermode=yes 
# -o smtpd_sasl_auth_enable=yes 
# -o smtpd_reject_unlisted_recipient=no 
# -o smtpd_client_restrictions=$mua_client_restrictions 
# -o smtpd_helo_restrictions=$mua_helo_restrictions 
# -o smtpd_sender_restrictions=$mua_sender_restrictions 
# -o smtpd_recipient_restrictions= 
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject 
# -o milter_macro_daemon_name=ORIGINATING 

#628  inet n  -  -  -  -  qmqpd 
pickup unix n  -  -  60  1  pickup 

pickup fifo n  -  -  60  1  pickup 
    -o content_filter=filter:dummy 

cleanup unix n  -  -  -  0  cleanup 
qmgr  unix n  -  n  300  1  qmgr 
#qmgr  unix n  -  n  300  1  oqmgr 
tlsmgr unix -  -  -  1000? 1  tlsmgr 
rewrite unix -  -  -  -  -  trivial-rewrite 
bounce unix -  -  -  -  0  bounce 
defer  unix -  -  -  -  0  bounce 
trace  unix -  -  -  -  0  bounce 
verify unix -  -  -  -  1  verify 
flush  unix n  -  -  1000? 0  flush 
proxymap unix -  -  n  -  -  proxymap 
proxywrite unix -  -  n  -  1  proxymap 
smtp  unix -  -  -  -  -  smtp 
relay  unix -  -  -  -  -  smtp 
#  -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 
showq  unix n  -  -  -  -  showq 
error  unix -  -  -  -  -  error 
retry  unix -  -  -  -  -  error 
discard unix -  -  -  -  -  discard 
local  unix -  n  n  -  -  local 
virtual unix -  n  n  -  -  virtual 
lmtp  unix -  -  -  -  -  lmtp 
anvil  unix -  -  -  -  1  anvil 
scache unix -  -  -  -  1  scache 

smtp  inet n  -  -  -  -  smtpd 
     -o content_filter=filter:dummy 

#myhook unix -  n  n  -  -  pipe 
# flags=F user=vmail argv=/home/panawaredev/Documents/postfix.php ${sender} ${size} ${recipient} 
filter unix - n n - - pipe 
    flags=Rq user=vmail null_sender= 
    argv=/home/panawaredev/Documents/postfix.php ${sender} -- ${recipient}  
# 
# ==================================================================== 
# Interfaces to non-Postfix software. Be sure to examine the manual 
# pages of the non-Postfix software to find out what options it wants. 
# 
# Many of the following services use the Postfix pipe(8) delivery 
# agent. See the pipe(8) man page for information about ${recipient} 
# and other message envelope options. 
# ==================================================================== 
# 
# maildrop. See the Postfix MAILDROP_README file for details. 
# Also specify in main.cf: maildrop_destination_recipient_limit=1 
# 
maildrop unix -  n  n  -  -  pipe 
    flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} 
# 
# ==================================================================== 
# 
# Recent Cyrus versions can use the existing "lmtp" master.cf entry. 
# 
# Specify in cyrus.conf: 
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4 
# 
# Specify in main.cf one or more of the following: 
# mailbox_transport = lmtp:inet:localhost 
# virtual_transport = lmtp:inet:localhost 
# 
# ==================================================================== 
# 
# Cyrus 2.1.5 (Amos Gouaux) 
# Also specify in main.cf: cyrus_destination_recipient_limit=1 
# 
#cyrus  unix -  n  n  -  -  pipe 
# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user} 
# 
# ==================================================================== 
# Old example of delivery via Cyrus. 
# 
#old-cyrus unix -  n  n  -  -  pipe 
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user} 
# 
# ==================================================================== 
# 
# See the Postfix UUCP_README file for configuration details. 
# 
uucp  unix -  n  n  -  -  pipe 
    flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) 
# 
# Other external delivery methods. 
# 
ifmail unix -  n  n  -  -  pipe 
    flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) 
bsmtp  unix -  n  n  -  -  pipe 
    flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient 
scalemail-backend unix - n n - 2 pipe 
    flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} 
mailman unix -  n  n  -  -  pipe 
    flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py 
    ${nexthop} ${user} 

postfix.php

#!/usr/bin/php 
<?php 
$file = fopen("postfixtest", "a"); 
fwrite($file, "Script successfully ran at ".date("Y-m-d H:i:s")."\n"); 


// read from stdin 
$fd = fopen("php://stdin", "r"); 
$email = "first test"; 
while (!feof($fd)) { 
    $line = fread($fd, 1024); 
    $email .= $line; 
echo "."; 
} 
echo $email; 
fclose($fd); 

fwrite($file, $email); 
fclose($file); 

?> 

maillog的文件

Apr 12 22:43:16 panawaredev-MS-7788 postfix/cleanup[10886]: 4B84620ECC: message-id=<[email protected]> 
Apr 12 22:43:16 panawaredev-MS-7788 postfix/bounce[10891]: 3680120ECA: sender non-delivery notification: 4B84620ECC 
Apr 12 22:43:16 panawaredev-MS-7788 postfix/qmgr[10293]: 4B84620ECC: from=<>, size=2234, nrcpt=1 (queue active) 
Apr 12 22:43:16 panawaredev-MS-7788 postfix/qmgr[10293]: 3680120ECA: removed 
Apr 12 22:43:16 panawaredev-MS-7788 postfix/local[10892]: 4B84620ECC: to=<[email protected]>, relay=local, delay=0.07, delays=0.03/0/0/0.03, dsn=2.0.0, status=sent (delivered to maildir) 
Apr 12 22:43:16 panawaredev-MS-7788 postfix/qmgr[10293]: 4B84620ECC: removed 

這是正確的方式「當你的Postfix的服務器接收郵件觸發一個PHP腳本」?我

如果是的話,你能幫我運行我的腳本,否則任何建議找到另一種方式。 enter image description here

回答

2

上面的所有配置都是正確的,上面提到的2個tutoriels也是非常有用的。希望他們可以幫助其他人。

問題是由ubuntu的權限造成的。

我用 「命令」:

sudo mail -s "hello" -a /path/file.dat [email protected] 
content of my email is here 
. 
cc: 

然後腳本拼命地跑。

相關問題