我正在 FreeBsd 上设置 Postfix + PostgreSql 来托管我的电子邮件服务器。我已完成约 50%。
我对几个 *.cf 文件感到困惑,不知道应该使用哪一个。
我拥有几个域名,比如:domain1.com、domain2.com 和 domain3.com。
我到底应该在哪里指定这 3 个域?在 Postfix 的哪个配置文件中?这样我的 Postfix 只会发送和接收它们的电子邮件?
答案1
首先你必须选择是否[电子邮件保护]是不同的地址 vs[电子邮件保护]:我认为你会的,否则你就不需要 Postgresql 了。
第二步是告诉 Postfix 在哪里查找有关域和电子邮件帐户的信息:看起来您想使用 Postgresql 而不是本地文本文件(请参阅http://www.postfix.org/VIRTUAL_README.html#local_vs_database),因此您需要:
- 为 Postfix 创建一个 Postgresql 帐户(例如
createuser -U postgres --pwprompt postfix
) - 创建一个 postfix_db 数据库
- 授予用户 postfix 访问数据库的权限(例如
GRANT ALL PRIVILEGES ON DATABASE postfix_db TO postfix_user;
) 创建别名、用户和域表:
mail=# CREATE TABLE 别名(别名文本NOT NULL,电子邮件文本NOT NULL);
mail=# CREATE TABLE users(电子邮件文本NOT NULL,密码文本NOT NULL,maildir 文本NOT NULL,创建时间戳和时区DEFAULT now());
mail=# CREATE TABLE 域(域 varchar(50) NOT NULL,节点 varchar(50),注释 varchar(500),PRIMARY KEY(域));
最后,你需要告诉 Postfix 如何从这些表中提取信息(请参阅http://www.postfix.org/PGSQL_README.html). 在main.cf中添加:
virtual_alias_maps = pgsql:/etc/postfix/virtual_alias_maps.cf
virtual_mailbox_domains = pgsql:/etc/postfix/virtual_mailbox_domains.cf
virtual_mailbox_maps = pgsql:/etc/postfix/virtual_mailbox_maps.cf
virtual_alias_maps.cf 的内容将如下所示:
user = postfix
password = your-pass
hosts = localhost
dbname = postfix_db
query = SELECT email FROM aliases WHERE alias='%s'
其他 .cf 文件的内容类似:用户、密码、连接到数据库的主机、数据库名称和用于获取所需信息的查询。Postfix 将根据需要替换格式字符串。
这些信息足以让您从高角度了解事物的工作原理。一旦您对幕后发生的事情有了大致了解,您就可以尝试以下要点:https://gist.github.com/solusipse/7ed8e1da104baaee3f05 或者这个操作指南:https://github.com/postfixadmin/postfixadmin/blob/master/DOCUMENTS/Postfix-Dovecot-Postgresql-Example.md