4

我想制作一个页面,允许人们在 dovecot/postfix 服务器上创建新的电子邮件帐户(通过 imap)。

我已经看过 php 函数imap_openimap_createmailbox,但是这些函数不会创建帐户,它只会创建一个新目录:/(并且您需要现有帐户的登录名/密码才能使用imap_open...)

所以我想知道是否可以这样做:)。

编辑

我添加这个是因为我之前的消息不够具体。我需要一个首页来允许用户注册一个新邮箱并检查他们想要的邮件别名是否免费。这就是为什么大多数基于 Web 的管理员都不适合我的原因。我不希望最终用户看到管理面板。

4

2 回答 2

4

默认情况下,postfix & dovecot 从系统中获取他们的用户。这是/etc/passwd在 UNIX/Linux 机器上。

从 PHP 脚本管理这个是可能的,但不是太漂亮。

  • 您可以使用posix_getpwnam来检查用户名是否存在,并获取有关此用户的信息。

  • 添加用户最好useradd(8)在 Linux 上完成。您将需要使用exec()来启动此 shell 实用程序。示例用法可能是:

    $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));
    

不过,我不会真的推荐这个。

我建议将您的用户存储在 SQL 数据库中,例如 PostgreSQL、MySQL 或 SQLite。这很容易设置,在 PHP 端,您所要做的就是在数据库中添加/删除/更新行。这可能是最好的解决方案,因为它不太复杂,但仍然相当灵活。后缀
页面有一些关于 该主题的“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 回答