2014-07-26 19 views
0

我在unix上使用postfix和dovecot。我可以通過郵件客戶端以及unix賬戶(通過'郵件'命令)發送郵件,但不能通過PHP發送郵件。在案例1中mail.err,mail.log和syslog中不會顯示任何錯誤或警告。您的建議非常感謝。 Inclindg main.cf,master.cf和dns記錄。與FQDN.com 這裏更換真實域名是main.cf:可以從郵件客戶端/ Unix帳戶發送電子郵件,但不是PHP

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 = FQDN.com 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
myorigin = /etc/mailname 
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.FQDN.com, server1.FQDN.com, localhost.FQDN.com, smtp.FQDN.com 
#relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
#mailbox_command = /usr/bin/procmail-wrapper -o -a $DOMAIN -d $LOGNAME 
mailbox_size_limit = 0 
recipient_delimiter = + 
#inet_interfaces = all 
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf 
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination 
smtpd_sasl_auth_enable = yes 
smtpd_sasl_security_options = noanonymous 
broken_sasl_auth_clients = yes 
home_mailbox = Maildir/ 

這裏是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  -  -  -  -  smtpd 
#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 
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 
# 
# ==================================================================== 
# 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} 

DNS記錄:

FQDN.COM. 3600 IN SOA ns73.domaincontrol.com. dns.jomax.net (
       2014072605 
       28800 
       7200 
       604800 
       600 
       ) 

; A Records 
@ 600 IN A XX.XXX.XXX.XX 
mail 1800 IN A XX.XXX.XXX.XX 
* 1800 IN A XX.XXX.XXX.XX 

; CNAME Records 
www 3600 IN CNAME @ 

; MX Records 
@ 1800 IN MX 10 mail.FQDN.com 

; TXT Records 
@ 1800 IN TXT ""v=spf1 mx -all"" 
mail 1800 IN TXT ""v=spf1 a -all"" 

; NS Records 
@ 3600 IN NS nsY.domaincontrol.com 
@ 3600 IN NS nsZ.domaincontrol.com 
+0

我一直在使用PHP郵件功能多年,現在從來沒有進入所有這些細節。我使用mail()或phpmailer(我作爲構建它的團隊的一部分工作)。如果你的服務器的郵件設置是正確的,那麼php mail()和phpmailer會提供它。 – raidenace

+0

在你的php.ini中,你有什麼sendmail_path? – mti2935

+0

; sendmail_path = – user3879501

回答

0

我做以下兩個變化,它現在起作用:

  • 在我的config.php中,我用localhost替換了smtp.mydomain.com(除了在我的A記錄中設置smtp.mydomain.com之外,是否需要在我的DNS中進行任何其他更改?)
  • 註釋掉了'IsSmtp '在phpMailer中修復一個認證問題。
相關問題