Fedora Core 21 上的 postgrey 配置非常不同,並且沒有記錄
在從 Fedora Core 16 升級到 Fedora Core 21 的過程中,挑戰之一是讓 postfix 與 postgrey 一起工作。經過長時間專注於它之後,我仍然沒有讓它工作。
在舊策略中,官方指示指示您編寫自己的腳本以放入
/etc/init.d
. 而且,事實上,早在 FC16 上,我就做到了!但是今天,我們有systemctl
. 您可以postgrey
使用 yum 安裝,儲存庫知道它。它安裝得很好。然後,您使用 啟用systemctl enable postgrey.service
,這也很順利。到現在為止還挺好。只剩下幾件事要做…
接下來,移動您的白名單文件 - 似乎是相同的格式。
在舊方案中,您的後綴 main.cf 文件中有這樣一行:
... smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_pipelining, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023, permit_mynetworks ...
在我的 /etc/init.d 中,我編寫了一個腳本,其中以下摘錄顯示了有趣的部分,並且執行良好:
... exec="/usr/sbin/postgrey" prog="postgrey" options="--unix=/var/spool/postfix/postgrey/socket --inet=10023" [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog lockfile=/var/lock/subsys/$prog start() { [ -x $exec ] || exit 5 echo -n $"Starting $prog: " daemon $exec -d $options retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } ...
請注意埠是如何指定的,
--inet=
並且它與 中的內容相匹配main.cf
。但是,當我嘗試使用它時,後綴伺服器會抱怨並且它不會收到電子郵件。它明確聲明它無法連接到 postgrey:
... Apr 12 13:27:50 ms1 postfix/smtpd[14273]: warning: connect to 127.0.0.1:10023: Connection refused Apr 12 13:27:50 ms1 postfix/smtpd[14273]: warning: problem talking to server 127.0.0.1:10023: Connection refused ...
我看了又看,找不到新方案的任何配置資訊。詢問 postgrey 是否啟動並且快樂得到這個:
# systemctl status postgrey.service -l ● postgrey.service - Postfix Greylisting Service Loaded: loaded (/usr/lib/systemd/system/postgrey.service; enabled) Active: active (running) since Sun 2015-04-12 12:13:19 PDT; 1h 19min ago Docs: man:postgrey(8) Process: 13280 ExecStart=/usr/sbin/postgrey --unix=/var/spool/postfix/postgrey/socket --pidfile=/var/run/postgrey.pid --group=postgrey --user=postgrey --greylist-text=Greylisted for %%s seconds --daemonize $POSTGREY_OPTS (code=exited, status=0/SUCCESS) Process: 13277 ExecStartPre=/bin/rm -f /var/run/postgrey.pid (code=exited, status=0/SUCCESS) Main PID: 13281 (/usr/sbin/postg) CGroup: /system.slice/postgrey.service └─13281 /usr/sbin/postgrey --unix=/var/spool/postfix/postgrey/socket --pidfile=/var/run/postgrey.pid --group=postgrey --user=postgrey --greylist-text=Greylisted for %s seconds --daemonize --delay=6 Apr 12 12:13:19 ms1 postgrey[13281]: Process Backgrounded Apr 12 12:13:19 ms1 postgrey[13281]: 2015/04/12-12:13:19 postgrey (type Net::Server::Multiplex) starting! pid(13281) Apr 12 12:13:19 ms1 postgrey[13281]: Binding to UNIX socket file "/var/spool/postfix/postgrey/socket" Apr 12 12:13:19 ms1 postgrey[13281]: Setting gid to "479 479" Apr 12 12:13:19 ms1 postgrey[13281]: Setting uid to "984"
奇怪的是,它沒有清楚地表示套接字 ID - 也許它不需要?但我還是檢查了 netstat:
# netstat -l | grep postgrey unix 2 [ ACC ] STREAM LISTENING 126293 /var/spool/postfix/postgrey/socket
…我不是專家
netstat
,但我認為這意味著程序/postfix/postgrey/socket
正在偵聽埠 126293。那麼,我是否應該更改 main.cf 中的行以匹配此埠號?如果是這樣,那是行不通的-或者,到目前為止還沒有!而且,我似乎找不到放置備用埠/套接字配置的地方,所以看起來你被他們給我們的任何東西困住了。
任何幫助/建議表示讚賞。…我在想下一步唯一的行動是弄清楚
systemctl
工具集是如何工作的,即使我現在不想花時間——今天是星期天!
Fedora 21 和 RHEL/CentOS 7 使用新的基於 Python 的 postgrey 重新實現。
在此實現中,您需要對 Postfix 配置進行的唯一
smtpd_recipient_restrictions
更改是從. 例如,取自我自己的郵件伺服器:smtpd_recipient_restrictions = #.....other stuff here # This should be next-to-last check_policy_service unix:postgrey/socket, permit
哦,是的,這記錄在
/usr/share/doc/postgrey-*/README-rpm
. :)