php - 从 dovecot/postfix 上的 php 脚本创建一个新的电子邮件帐户

标签 php email imap postfix-mta dovecot

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

我看过 php 函数 imap_openimap_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/

相关文章:

php - 如何使用 PHP 获取 MySQL 表中的行数?

php - 在 PHP 中创建多个站点地图

java - 如何使用 mstor 读取 mbox 邮件消息

ruby-on-rails - rails 4 : How to send decoded HTML in an email?

PHP获取imap附件的文件大小

javascript - 当来自 javascript 的引用时,将图像放置在 assetic 中的位置

php - 使用 Swift Mailer、GMail 和 PHP 发送电子邮件,权限被拒绝错误

java - Android JavaMail IMAP 10 秒后超时

python imaplib - 将电子邮件标记为未读或未看到

php - 独特的 key 生成