我意识到这个问题之前曾经被问及过。 这是我所做的。
创build了一个catchall地址和用户。 这是我的/etc/postfix/virtual
文件。
@example.com catchall
将其添加到main.cf
这是条目。
virtual_alias_maps = hash:/etc/postfix/virtual
这工作,我所有的邮件去了/var/mail/catchall
这是很好的。 接下来,我想创build一个pipe道,每次收到邮件时都运行一个程序。 为了完成这个,我创build了一个/ etc / postfix / transport
example.com catchall:
然后我把这个添加到我的master.cf
文件中。
catchall unix - nn - - pipe flags=F user=catchall argv=/tmp/test.sh
test.sh只是一个很小的shell脚本,所以我可以看到我的代码运行。
#!/bin/bash echo `whoami` > /tmp/aaa.txt
最后,我确保catchall用户可以用su -c "/tmp/test.sh " catchall
运行这个脚本, su -c "/tmp/test.sh " catchall
输出catchall
到期望的aaa.txt。
所以我的问题是,是什么给了? 我错过了什么? 任何帮助? 我已阅读文档,阅读教程,我只是无法得到它的工作。 catchall地址正常工作,我看到mail.log
中收到的mail.log
, mail.err
是空的,我已经在我的所有文件上运行mail.log
,编辑完文件后postfix reload
。 但我的shell脚本不会运行….
postconf -n
alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no config_directory = /etc/postfix inet_interfaces = all mailbox_size_limit = 0 mydestination = twinsen.example.com, myhostname, localhost.localdomain, localhost myhostname = mydomain-guts mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = no recipient_delimiter = + relayhost = smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = yes transport_maps = hash:/etc/postfix/transport virtual_alias_maps = hash:/etc/postfix/virtual
mail.log
Jan 11 22:18:02 mydomain-guts postfix/smtpd[3835]: connect from mail-we0-f172.google.com[74.125.82.172] Jan 11 22:18:02 mydomain-guts postfix/smtpd[3835]: 790E01400D4: client=mail-we0-f172.google.com[74.125.82.172] Jan 11 22:18:02 mydomain-guts postfix/cleanup[3834]: 790E01400D4: message-id=<CA+wDdVbiDS=Kpa7nMA4-y5GCMgo0PcsK4G5Kb_uE_xKHBYY+vQ@mail.gmail.com> Jan 11 22:18:02 mydomain-guts postfix/qmgr[3829]: 790E01400D4: from=<[email protected]>, size=1828, nrcpt=1 (queue active) Jan 11 22:18:02 mydomain-guts postfix/smtp[3831]: 790E01400D4: to=<[email protected]>, orig_to=<[email protected]>, relay=none, delay=0.24, delays=0.2/0/0.04/0, dsn=5.4.6, status=bounced (mail for example.com loops back to myself) Jan 11 22:18:02 mydomain-guts postfix/cleanup[3834]: B3E2F1400D9: message-id=<20150112031802.B3E2F1400D9@mydomain-guts> Jan 11 22:18:02 mydomain-guts postfix/qmgr[3829]: B3E2F1400D9: from=<>, size=3677, nrcpt=1 (queue active) Jan 11 22:18:02 mydomain-guts postfix/bounce[3832]: 790E01400D4: sender non-delivery notification: B3E2F1400D9 Jan 11 22:18:02 mydomain-guts postfix/qmgr[3829]: 790E01400D4: removed Jan 11 22:18:02 mydomain-guts postfix/smtpd[3835]: disconnect from mail-we0-f172.google.com[74.125.82.172] Jan 11 22:18:03 mydomain-guts postfix/smtp[3831]: B3E2F1400D9: to=<[email protected]>, relay=gmail-smtp-in.l.google.com[64.233.171.26]:25, delay=0.85, delays=0.01/0/0.28/0.56, dsn=2.0.0, status=sent (250 2.0.0 OK 1421032683 p20si20890136qgd.117 - gsmtp) Jan 11 22:18:03 mydomain-guts postfix/qmgr[3829]: B3E2F1400D9: removed
呃多么的</s> </s>。 我想,幸运的是,仔细检查mail.log是什么帮助。
我必须做的。
在main.cf
我将mydestination指令中的第一个条目更改为mydomain.com
。 在询问之后,我得到了一个表示要求main.cf文件的提示,并注意到我在mail.log中得到了不同的结果
最后,我改变了
/etc/mailname
包含twinsen.mydomain.com
。
问题是由于子域名称不匹配,邮件被我的服务器拒绝。
我仍然收到错误。
postfix/trivial-rewrite[4745]: warning: hash:/etc/postfix/transport lookup error for "*"
运行后他们得到修复:
postmap /etc/postfix/transport