我想制作一个页面,允许人们在 dovecot/postfix 服务器上(通过 imap)创建新的电子邮件帐户。
我看过 php 函数 imap_open
和 imap_createmailbox
,但是这些函数不创建帐户,它只创建一个新目录:/
(并且您需要现有帐户的登录名/密码才能使用 imap_open
...)
所以我想知道是否可以这样做:)。
编辑
我添加这个是因为我之前的信息不够具体。 我需要一个首页来允许用户注册一个新邮箱并检查他们想要的邮件别名是否免费。这就是为什么大多数基于 Web 的管理员对我不利的原因。我不希望最终用户看到管理面板。
最佳答案
默认 postfix 和 dovecot 从系统中获取用户。这是 UNIX/Linux 机器上的 /etc/passwd
。
可以从 PHP 脚本管理它,但不是太漂亮。
您可以使用
posix_getpwnam
检查用户名是否存在,并获取有关该用户的信息。在 Linux 上最好使用
useradd(8)
添加用户。您将需要使用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 端,您所要做的就是添加/删除/更新数据库中的行。这可能是最好的解决方案,因为它不太复杂,但仍然相当灵活。
postfix 页面有一些关于该主题的“HOWTO”和 so does dovecot。
最后一个选项是 LDAP。 LDAP 更复杂,但可以说“更好”且更灵活。 PHP 有一个 LDAP 接口(interface)。
关于php - 从 dovecot/postfix 上的 php 脚本创建一个新的电子邮件帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21831586/