Postfix

Fedora Core 21 上的 postgrey 配置非常不同,並且沒有記錄

  • April 12, 2015

在從 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. :)

引用自:https://serverfault.com/questions/682198