Fedora Core16からFedoraCore 21にアップグレードする際の課題のひとつは、postfixをpostgreyで動作させることでした。長い時間をかけて集中した後も、まだ機能していません。
古い戦略では、公式の指示により、/etc/init.d
に配置する独自のスクリプトを作成するように指示されています。そして、確かに、FC16に戻って、私はそれをしました!しかし、今日はsystemctl
があります。 postgrey
をyumと一緒にインストールできます。リポジトリはそれを知っています。正常にインストールされます。次に、systemctl enable postgrey.service
で有効にしますが、これもうまくいきます。
ここまでは順調ですね。やるべきことがいくつか残っています...
次に、ホワイトリストファイルに移動します-同じ形式のようです。
古いスキームでは、postfixmain.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
にあるものと一致するかに注意してください。
しかし、これを使おうとすると、postfixサーバーが文句を言い、メールを受信しません。 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
ツールセットがどのように機能するかを理解することだけだと思っていましたが、今は時間をかけたくありません。日曜日です。
Fedora21とRHEL/CentOS 7は、新しいPythonベースのポストグレイ再実装を使用します。
この実装では、のみ 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
に文書化されています。 :)