4

dovecot/postfix サーバー (imap 経由) で新しいメール アカウントを作成できるページを作成したいと思います。

私は php 関数imap_openとを見てきましimap_createmailboxたが、これらの関数はアカウントを作成せず、新しいディレクトリを作成するだけです:/ (そして、使用するには既存のアカウントのログイン/パスワードが必要imap_openです...)

だから、これが可能かどうか知りたいです:)。

編集

以前のメッセージが十分に具体的ではなかったので、これを追加します。ユーザーが新しいメールボックスを登録し、必要なメール エイリアスが空いているかどうかを確認できるフロント ページが必要です。そのため、ほとんどの Web ベースの管理者は私には向いていません。エンドユーザーに管理パネルを見せたくありません。

4

2 に答える 2

4

デフォルトは、postfix と dovecot はシステムからユーザーを取得します。これは/etc/passwdUNIX/Linux ボックスにあります。

これを PHP スクリプトから管理することは可能ですが、あまりきれいではありません。

  • posix_getpwnamユーザー名が存在するかどうかを確認し、このユーザーに関する情報を取得するために使用できます。

  • ユーザーの追加はuseradd(8)、Linux で行うのが最適です。exec()このシェル ユーティリティを起動するには、 を使用する必要があります。使用例は次のとおりです。

    $pw = crypt($_POST['password'], '$6$1234567890123456'); # This should be 16 characters of random salt
    exec(sprintf('useradd --groups mailuser --no-user-group --shell nologin --password %s', escapeshellarg($pw));
    

ただし、これはあまりお勧めしません。

私がお勧めするのは、ユーザーを PostgreSQL、MySQL、SQLite などの SQL データベースに保存することです。これはセットアップが非常に簡単で、PHP 側で行う必要があるのは、データベースの行を追加/削除/更新することだけです。これはあまり複雑ではなく、かなり柔軟であるため、おそらく最良のソリューションです。postfix
ページには、件名に関するいくつか の「HOWTO」があり、dovecot も同様です。

最後のオプションとして、LDAP があります。LDAP はより複雑ですが、間違いなく「より優れた」柔軟性があります。PHP にはLDAPインターフェースがあります。

于 2014-02-17T18:36:01.830 に答える
4

良い。答えは、dovecot と postfix のユーザー アカウントのリストがサーバーのどこに保存されているかによって異なります。つまり、dovecot と postfix はどこからユーザー アカウントを取得しますか。つまり、dovecot と postfixはユーザー アカウントの独自のリストを保持せず、既存のリストを使用するだけです。たとえば、数年前に dovecot と postfix を構成して、MySQL データベースからユーザー アカウント (およびそれぞれの電子メール アドレス、ストレージ パスなど) のリストを取得するようにしました。このような実装では、新しい電子メール アカウントを追加するために、その MySQL データベースにいくつかのレコードを挿入するだけで十分です。

サーバーで dovecot と postfix がどのように構成されているかわかりません。システムユーザーアカウントを使用しているだけかもしれません (その後、useradd/でユーザーアカウントを追加する必要がありadduserます)、LDAP からユーザーアカウントリストを取得している (その後、ユーザーを LDAP に挿入する必要があります)、または単純な構成ファイルから取得している可能性があります (その後、設定ファイルを編集します)。

于 2014-02-17T18:31:59.940 に答える