2013-07-11 24 views
0

我想讓後綴接受vacationcpl腳本,由roundcube的度假插件提供(我有興趣在接收特定域的郵件時調用腳本/子域名)。到目前爲止,一切似乎都工作了..除了腳本不被調用;)postfix;管道郵件內容腳本爲特定子域的所有郵件

這裏的一些數據,讓你開始,然後一些更多的解釋:

postconf -n:

[email protected]:/etc/postfix# postconf -n 
alias_database = hash:/etc/aliases 
alias_maps = hash:/etc/aliases 
append_dot_mydomain = no 
biff = no 
broken_sasl_auth_clients = yes 
config_directory = /etc/postfix 
disable_vrfy_command = yes 
dovecot_destination_recipient_limit = 1 
inet_interfaces = all 
mailbox_command = procmail -a "$EXTENSION" 
mailbox_size_limit = 0 
message_size_limit = 20480000 
mydestination = localhost, localhost.localdomain, localhost, vacation.example.com 
myhostname = example.com 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
myorigin = /etc/mailname 
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps 
readme_directory = no 
recipient_delimiter = + 
relayhost = 
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache 
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) 
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination 
smtpd_sasl_auth_enable = yes 
smtpd_sasl_authenticated_header = yes 
smtpd_sasl_path = private/auth_dovecot 
smtpd_sasl_type = dovecot 
smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf 
smtpd_sender_restrictions = reject_unknown_sender_domain 
smtpd_tls_cert_file = /etc/postfix/sslcert/mailserver.crt 
smtpd_tls_key_file = /etc/postfix/sslcert/mailserver.key 
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache 
smtpd_use_tls = yes 
transport_maps = hash:/etc/postfix/transport 
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf 
virtual_gid_maps = static:5000 
virtual_mailbox_base = /var/vmail/ 
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf 
virtual_mailbox_limit = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf 
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf 
virtual_minimum_uid = 104 
virtual_transport = dovecot 
virtual_uid_maps = static:5000 

運輸文件:

[email protected]:/etc/postfix# cat transport 
vacation.example.com  vacation: 
.vacation.example.com  vacation: 

main.cf:

[email protected]:/etc/postfix# cat main.cf 
myorigin = /etc/mailname 

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) 
biff = no 

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

# maximum size for emails (20MB) 
message_size_limit = 20480000 

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

readme_directory = no 

# TLS parameters 
smtpd_tls_cert_file=/etc/postfix/sslcert/mailserver.crt 
smtpd_tls_key_file=/etc/postfix/sslcert/mailserver.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. 

myhostname = example.com 
alias_maps = hash:/etc/aliases 
alias_database = hash:/etc/aliases 
myorigin = /etc/mailname 
mydestination = localhost, localhost.localdomain, localhost, vacation.example.com 
#mydestination = $myhostname, localhost.$mydomain, localhost, vacation.example.com 
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 
mailbox_command = procmail -a "$EXTENSION" 
mailbox_size_limit = 0 
recipient_delimiter = + 
inet_interfaces = all 

# a bit more spam protection 
disable_vrfy_command = yes 

# Authentification 
smtpd_sasl_type=dovecot 
smtpd_sasl_path=private/auth_dovecot 
smtpd_sasl_auth_enable = yes 
smtpd_sasl_authenticated_header = yes 
broken_sasl_auth_clients = yes 

proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $smtpd_sender_login_maps 

smtpd_sender_login_maps = proxy:mysql:/etc/postfix/mysql_sender_login_maps.cf 

smtpd_sender_restrictions = reject_unknown_sender_domain 

smtpd_recipient_restrictions = permit_sasl_authenticated 
     permit_mynetworks 
     reject_unauth_destination 

dovecot_destination_recipient_limit=1 

# Virtual mailboxes 
virtual_mailbox_base = /var/vmail/ 
virtual_transport = dovecot 
#virtual_transport = virtual 
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf 
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf 
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf 
virtual_minimum_uid = 104 
virtual_uid_maps = static:5000 
virtual_gid_maps = static:5000 
virtual_mailbox_limit = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf 
transport_maps=hash:/etc/postfix/transport 

master.cf

[email protected]:/etc/postfix# cat 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"). 
# 
# 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 
    -o content_filter=amavis:[127.0.0.1]:10024 
#submission inet n  -  -  -  -  smtpd 
# -o smtpd_tls_security_level=encrypt 
# -o smtpd_sasl_auth_enable=yes 
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject 
# -o milter_macro_daemon_name=ORIGINATING 
smtps  inet n  -  -  -  -  smtpd 
    -o smtpd_tls_wrappermode=yes 
    -o smtpd_sasl_auth_enable=yes 
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject 
    -o content_filter=amavis:[127.0.0.1]:10024 
# -o milter_macro_daemon_name=ORIGINATING 
#628  inet n  -  -  -  -  qmqpd 
pickup fifo n  -  -  60  1  pickup 
     -o content_filter= 
     -o receive_override_options=no_header_body_checks 
cleanup unix n  -  -  -  0  cleanup 
qmgr  fifo n  -  n  300  1  qmgr 
#qmgr  fifo 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 
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops 
relay  unix -  -  -  -  -  smtp 
    -o smtp_fallback_relay= 
#  -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} 

dovecot unix -  n  n  -  -  pipe 
    flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} 

vacation unix -  n  n  -  -  pipe 
    flags=Rq user=vmail argv=/var/spool/vacation/vacation.pl -f ${sender} -- ${recipient} 

amavis unix - - - - 2 smtp 
     -o smtp_data_done_timeout=1200 
     -o smtp_send_xforward_command=yes 

127.0.0.1:10025 inet n - - - - smtpd 
     -o content_filter= 
     -o local_recipient_maps= 
     -o relay_recipient_maps= 
     -o transport_maps=hash:/etc/postfix/transport 
     -o smtpd_restriction_classes= 
     -o smtpd_delay_reject=no 
     -o smtpd_client_restrictions=permit_mynetworks,reject 
     -o smtpd_helo_restrictions= 
     -o smtpd_sender_restrictions= 
     -o smtpd_recipient_restrictions=permit_mynetworks,reject 
     -o smtpd_data_restrictions=reject_unauth_pipelining 
     -o smtpd_end_of_data_restrictions= 
     -o mynetworks=127.0.0.0/8 
     -o smtpd_error_sleep_time=0 
     -o smtpd_soft_error_limit=1001 
     -o smtpd_hard_error_limit=1000 
     -o smtpd_client_connection_count_limit=0 
     -o smtpd_client_connection_rate_limit=0 
     -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_address_mappings 



# now what should fire the "vacation" script is the fact that there is an mysql table entry in: 
mysql> select address,goto from alias where address='[email protected]' and active=1; 
+-------------------------+-----------------------------------------------------------------------------------------------+ 
| address     | goto                       | 
+-------------------------+-----------------------------------------------------------------------------------------------+ 
| [email protected] | [email protected]@vacation.example.com,[email protected],[email protected] | 

所以理論上任何我發送到[email protected]被保存到[email protected]'s郵箱,然後被轉發到彼得@ example.com @ vacation.example.com和peter @ example.com @ vacation.example.com。數據庫中第二個非常奇怪的電子郵件地址並非真正正確,這不是我的想法,而是通過roundcubemail vacation.pl插件啓用度假的結果。

所以問題是當我發送郵件到[email protected],轉發到[email protected]工作,但轉發到奇怪的彼得@ example.com @ vacation.example.com不工作該腳本永遠不會被調用,應該在收到.vacation.example.com的郵件時通過郵件調用該郵件。

我檢查了相應的sql文件中的所有sql查詢,他們似乎都工作了。

希望你能幫到:)

+0

我認爲我的具體問題是,即使別名工作與vacation.example.com郵件不呼叫爲它指定的傳輸,但發送到dovecot(這可能只是丟棄它)而不是perl腳本(mail.log):Jul 12 14:49:24 mail postfix/pipe [14067]:B9733B80AB4:** to = <[email protected]>,orig_to = <[email protected] @ vacation.example。延遲= 0.34,延遲= 0.05/0.02/0/0.27,dsn = 2.0.0,狀態=發送(通過dovecot服務傳遞) – user1449974

回答

1

看來我解決了這個謎題。當我從[email protected]創建一個別名到[email protected]時,腳本被調用。

mail.log

Jul 12 15:20:55 mail postfix/pipe[14843]: 8854BB80B07: to=<[email protected]>, relay=vacation, delay=0.19, delays=0.07/0/0/0.12, dsn=2.0.0, status=sent (delivered via vacation service) 

vacation.pl日誌文件:

2013/07/12 15:21:27 DEBUG> /var/spool/vacation/vacation.pl:550 main:: - Script argument SMTP recipient is : '[email protected]' and smtp_sender : '[email protected]' 
2013/07/12 15:21:27 DEBUG> /var/spool/vacation/vacation.pl:580 main:: - Converted autoreply mailbox back to normal style - from [email protected] to test 
2013/07/12 15:21:27 DEBUG> /var/spool/vacation/vacation.pl:590 main:: - Email headers have to: '[email protected]' and From: 'Peter <[email protected]>' 
2013/07/12 15:21:27 ERROR> /var/spool/vacation/vacation.pl:538 main::check_and_clean_from_address - Address is not valid; exiting 

和模具由於某種原因,我停下來關心。通過別名進行奇怪的double @重命名的別名設置都是通過roundcube插件的web界面配置的,所以很多人都喜歡插件,我認爲double @可以,並且爲這個小任務工作。我很好奇自己,但是很好。看起來像雙@確實沒有意義;)所以運輸的東西解決。我想我的問題首先是相信這個特定的roundcube插件的評論:http://sourceforge.net/projects/rcubevacation/

將移動到sieve現在..但我學到了很多關於後綴,並知道如何管道郵件的腳本爲具體的子域是一個很好的知識;)

相關問題