web-dev-qa-db-ja.com

Fedora Core 21のpostgrey構成は非常に異なり、文書化されていません

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ツールセットがどのように機能するかを理解することだけだと思っていましたが、今は時間をかけたくありません。日曜日です。

1
Richard T

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に文書化されています。 :)

5
Michael Hampton