web-dev-qa-db-ja.com

Postfix:SASL認証にシンプルなファイルを使用する方法?

Debian VPSでPostfixを実行して、アプリケーションから電子メールを送信したいのですが。アプリケーション(他のVPSで実行)は、SMTPを介してPostfixに接続します。 Postfixは受信メールを処理する必要はありません。発信メッセージを送信するだけです。

第三者中継を防ぐには、SASL認証を使用する必要があります。ただし、SASL認証でDovecotやMySQLを実行したくありません。

単純なファイル(ユーザー名とパスワードを含む)を使用してSASL認証を設定するにはどうすればよいですか?

私はすでに同様の 質問 を見つけました。しかし、そこに与えられた満足のいく答えはありません。

8
Jonathan

現在、Postfixは2つのSASL認証方式のみをサポートしています。その1つはDovecotですが、これは望ましくありません。もう1つはCyrusです。これは、Postfixを書き直さなくても取得できるものとほぼ同じです。別の認証デーモン(saslauthd)を実行する必要がありますが、認証ファイルは簡単に編集および更新できます。

Cyrus SASLを使用するための基本は postfixドキュメントサイト にありますが、ここでは簡単な説明を示します。 どうぞ混乱を招くものがあればリンクをご覧ください!

まず、プラグインsasldbを使用してCyrus SASLをインストールします。 (それを行う方法は読者の演習として残されています。おそらく、unixブランドが使用しているパッケージシステムにパッケージがあるはずです。)PostfixとSASLの間の通信は、unixドメインソケットを介して行われるため、 SASLグループに接尾辞を追加し、そのグループにディレクトリ/var/run/saslauthdに対する読み取りおよび実行権限があることを確認します。

SASLを構成する

/etc/sasl2/smtpd.confを編集して、SASLがsasldbを使用するように設定します。

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM

Sasldbプラグインは、saslがユーザー名とパスワードにBerkeley DBファイルを使用することを意味します。コマンドsaslpasswd2を使用してユーザーを追加します。

$ saslpasswd2 -c -u example.com username
Password:
Again (for verification):

ユーザー名と一緒にドメインを指定すると、ユーザーは認証時に「username」だけでなく「[email protected]」を使用する必要があることに注意してください。

入力したユーザーを確認するには、sasldblistusers2を実行します。

Saslauthdを起動し、次のようにして認証が機能することを確認します

testsaslauthd -u [email protected] -p password

Postfixを構成する

それが終わったら、/ etc/postfix/main.cfを編集して、SASLを使用し、Cyrusに認証されていることをCyrusに通知するようにPostfixに指示します。

smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd

次に、postfixをリロードすると、設定されます。

14
Jenny D

いくつかのことを明確にします

Sasldbでアカウントを作成します。

% saslpasswd2 -c -u fqdn username

認証のテスト:

% testsaslauthd -u username -p password

(注:ユーザー名はnotの後にfqdnが続きます)

Rootアカウントを作成することも追加したいと思います

% saslpasswd2 -c -u example.com root

認証させません、

% testsaslauthd -u root -p some_password
0: NO "authentication failed"

しかし、これはバグではありません。これは単なる安全機能です。

1
Saurabh

第三者中継を防ぐには、SASL認証を使用する必要があります。

SASLは、これを防ぐ多くの方法の1つにすぎません。もう1つは、他のVPSで使用するIPをホワイトリストに登録するか、TLSクライアント証明書を要求することです(これは最も安全な方法と言えます)。

Postfixマシンで署名CAをセットアップし、Eメールを送信するVPSごとに1つの証明書に署名するだけです。
次に、送信されたすべてのメールに対して完全なクライアント証明書の検証を要求します。他の送信方法を無効にします。

PostfixはSASLを直接サポートしていないため、要求することはできません。

1
adaptr

着信メールを処理する必要がない場合は、認証に煩わされないでください。ファイアウォールで着信トラフィックをブロックするか、ローカルホストのみに制限します。

 inet_interfaces = 127.0.0.1

オープンリレーの問題がなくなり、アプリケーションをPostfix経由で送信する必要があるアプリケーションの複雑化を回避できます。

0
mc0e