免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6286 | 回复: 4

[Mail] 在 FreeBSD 下安装 postfix、courier-imap 邮件服务器(第一部分:基本功能) [复制链接]

论坛徽章:
0
发表于 2010-01-29 17:14 |显示全部楼层
本帖最后由 iheaing 于 2010-02-09 12:14 编辑

在 FreeBSD 下安装 postfix、courier-imap 邮件服务器(第一部分:基本功能)


(一)声明:

(1)我在安装过程中,发现大量网站的转贴有排版格式超烂的问题。
所以本文只有 www.chinaunix.netwww.freebsdchina.org
发表,不准转贴!如果你藐视这个声明,转贴时请注意文章格式。
(2)如果你的回复少于十个字,请再三考虑是否有回复的必要。


(二)感谢:

作者iheaing感谢 google.com、CU mail论坛的诸位版主、各软件的开发者和……。


(三)安装 www/apache22、lang/PHP5。

(0)略。
(1)安装 www/apache22 时选择支持 pgsql。
(2)lang/php5-extensions不用安装。
(3)网上的howto大多使用 mysql 或 LDAP 来保存用户信息,我是已经有现成的
postgresql 数据库,才选择使用它的。


(四)安装 SASL2。

用于 smtp 验证的软件,postfix 通过它验证用户密码。
我安装这软件时,它是 cyrus-sasl-2.1.23 版本,因为数据库中保存的密码是加密的,
这个软件要读加密后的密码,要下载个补丁才行。

# cd /usr/ports/security/cyrus-sasl2/files
# fetch http://pieps.org/cyrus/dist/2.1.19/freebsd/patch-lib::checkpw.c
# cd ..
# make install clean


确定在安装时选择了 AUTHDAEMON、LOGIN、PLAIN、PGSQL。
建立 /usr/local/lib/sasl2/smtpd.conf 文件,内容如下:

pwcheck_method: auxprop
log_level: 3
mech_list: PLAIN LOGIN
auxprop_plugin: sql
allowanonymouslogin: no
allowplaintext: yes
srp_mda: md5
srvtab: /dev/null
opiekeys: /dev/null
password_format: crypt
sql_engine: pgsql
sql_hostnames: 192.168.1.3
sql_user: mail
sql_passwd: mailer
sql_database: pmail
sql_select: SELECT password FROM mailbox WHERE username = '%u@%r' AND active = true


更详细的说明请看: http://pieps.org/cyrus/


(五)安装 Postfix 2.6.5。

更详细的说明:
http://codepoets.co.uk/2009/post ... l-users-on-postfix/

安装时选择下面的功能:[PCRE] [SASL2] [TLS] [PGSQL] [VDA]
安装过程中两次提问,均回答 Y。

修改 /etc/rc.conf:
postfix_enable="YES"
sendmail_enable="NO"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"


修改 /etc/periodic.conf 文件如下:

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"


运行 ldd /usr/local/libexec/postfix/smtpd 可以看到,smtpd 已经支持 pgsql。
/usr/local/libexec/postfix/smtpd:
        libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x280e6000)
        libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x28118000)
        libpam.so.5 => /usr/lib/libpam.so.5 (0x2812f000)
        libcrypt.so.5 => /lib/libcrypt.so.5 (0x28136000)
        libssl.so.6 => /usr/lib/libssl.so.6 (0x2814f000)
        libcrypto.so.6 => /lib/libcrypto.so.6 (0x28195000)
        libpq.so.5 => /usr/local/lib/libpq.so.5 (0x282f1000)
        libc.so.7 => /lib/libc.so.7 (0x2830e000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x28426000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x2842f000)


建立邮箱用户的位置:
# mkdir /usr/virtual
# chown 80 /usr/virtual


修改 /usr/local/etc/postfix/main.cf 文件,如果 postfix 已经在运行中,可以运行命令
postfix reload 让它重新加载 mail.cf 文件。

home_mailbox = Maildir/
relay_domains = pgsql:/usr/local/etc/postfix/pgsql/relay_domains.cf
# myhostname = mail.ddss.org
smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20
# 上面三个设置是安全有关的,当客户端引发错误时,postfix 的初始等待时间延长 1s,
# 当错误20次时便hard_error。

# default_database_type = pgsql
# postfix 能支持多种数据库格式,默认是 hash,可使用上面这一设置修改。
# 使用 postconf -m 查看其它支持的格式。

#######PgSQL#######
virtual_gid_maps = static:80
virtual_mailbox_base = /usr/virtual
virtual_uid_maps = static:80
virtual_minimum_uid = 80
virtual_transport = virtual
virtual_alias_maps = pgsql:/usr/local/etc/postfix/pgsql/virtual_alias_maps.cf
virtual_mailbox_domains = pgsql:/usr/local/etc/postfix/pgsql/virtual_domains_maps.cf
virtual_mailbox_maps = pgsql:/usr/local/etc/postfix/pgsql/virtual_mailbox_maps.cf

#######SASL#######
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_auth_destination, reject
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sender_restrictions = permit_sasl_authenticated
smtpd_sasl_path = smtpd

#######Quota#######
message_size_limit = 5242880
virtual_mailbox_limit_inbox = no
virtual_mailbox_limit_override = yes
virtual_maildir_extended = yes
virtual_create_maildirsize = yes
virtual_mailbox_limit_maps = pgsql:/usr/local/etc/postfix/pgsql/virtual_mailbox_limits.cf
virtual_mailbox_limit = 52428800


上面大家可以看到在 /usr/local/etc/postfix/pgsql/ 下还有几个文件。

relay_domains.cf 文件如下:
user = mail
password = mailing
hosts = 192.168.1.3
dbname = pmail
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = true


virtual_alias_maps.cf 文件如下:
user = mail
password = mailing
hosts = 192.168.1.3
dbname = pmail
query = SELECT goto FROM alias WHERE address='%s' AND active = true


virtual_domains_maps.cf 文件如下:
user = mail
password = mailing
hosts = 192.168.1.3
dbname = pmail
query = SELECT domain FROM domain WHERE domain='%s' and backupmx = false and active = true


virtual_mailbox_limits.cf 文件如下:
user = mail
password = mailing
hosts = 192.168.1.3
dbname = pmail
query = SELECT quota FROM mailbox WHERE username='%s'


virtual_mailbox_maps.cf 文件如下:
user = mail
password = mailing
hosts = 192.168.1.3
dbname = pmail
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = true




(六)安装courier-imap。

# cd /usr/ports/mail/courier-imap
# make install clean


确定选择 [PGSQL]。

在 /usr/local/etc/courier-imap 目录中,把所有 *.dist 改成 *

修改权限:
# chmod o+x /var/run/authdaemond
#cd /usr/local/etc/authlib


修改 /usr/local/etc/authlib/authdaemonrc

authmodulelist="authpgsql"
authmodulelistorig="authpgsql"


修改 /usr/local/etc/authlib/authpgsqlrc

PGSQL_HOST              192.168.1.3
PGSQL_PORT              5432
PGSQL_USERNAME          mail
PGSQL_PASSWORD          mailing
PGSQL_DATABASE          pmail
PGSQL_USER_TABLE        mailbox
PGSQL_CRYPT_PWFIELD     password
# 上面这一条表示数据库保存的密码是经过加密的。
PGSQL_UID_FIELD         '80'
PGSQL_GID_FIELD         '80'
PGSQL_LOGIN_FIELD       username
PGSQL_HOME_FIELD        '/usr/virtual'
PGSQL_NAME_FIELD        name
PGSQL_MAILDIR_FIELD     maildir
PGSQL_QUOTA_FIELD       quota




(七)启动设置。

修改 /etc/rc.conf,添加:
courier_authdaemond_enable="YES"
courier_imap_imapd_enable="YES"
courier_imap_pop3d_enable="YES"



修改 /etc/mail/aliases:

root:  root@ddss.org

#newaliases

(八)重启电脑。


(九)安装postfixadmin。

# cd /usr/ports/mail/php5-imap/
# make install clean
# cd /usr/ports/mail/postfixadmin/
# make install clean


确定选择了 PGSQL。它会把所需的 php5-extensions 安装好,php5-imap 除外。

建立 /usr/local/etc/apache22/Includes/postfixadmin.conf 文件。内容如下:

Alias /pa "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin/">
   Options Indexes
   AllowOverride AuthConfig
   Order allow,deny
   Allow from all
</Directory>




(十)设置 PostfixAdmin。

修改 /usr/local/www/postfixadmin/config.inc.php
$CONF['configured'] = true;
$CONF['database_type'] = 'pgsql';
$CONF['database_host'] = '192.168.1.3';
$CONF['database_user'] = 'mail';
$CONF['database_password'] = 'mailing';
$CONF['database_name'] = 'pmail';
$CONF['database_prefix'] = '';
$CONF['database_port'] = '5432';
$CONF['admin_email'] = 'postmaster@ddss.org';
$CONF['encrypt'] = 'md5crypt';
# 上面这设置是使用 postfixadmin 添加用户时,使用 md5crypt 加密密码后保存在数据库里。设置为 cleartext 是明码保存。

$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
# 以上两条设置的功能是,在邮件用户里,用户目录为 domain.com/user 这样子的格式。
# ……这个文件有太详细的说明了,再说下去对不起我的英语老师。


在 client 端打开 http://mail.ddss.org/pa/setup.php 即可自动建表,并添加管理员帐号。


(十)测试。
在使用 postfixadmin 添加用户后,使用下面的命令可测试:

# authtest king@ddss.org
Authentication succeeded.

     Authenticated: king@ddss.org  (uid 80, gid 80)
    Home Directory: /usr/virtual
           Maildir: ddss.org/king/
             Quota: 102400000
Encrypted Password: $1$b5bbfb89$SuyLD6aUWyTWZpgoAH3Z1/
Cleartext Password: (none)
           Options: wbnodsn=1

l# authtest -s login one@ddss.org password
Authentication succeeded.

     Authenticated: one@ddss.org  (uid 80, gid 80)
    Home Directory: /usr/virtual
           Maildir: ddss.org/one/
             Quota: 51200000
Encrypted Password: $1$999026fd$jSNK914O8tV97x1CPwyxO/
Cleartext Password: password
           Options: wbnodsn=1


更多测试方法请看:
http://www.extmail.org/docs/extmail_solution_freebsd/#test

[ 本帖最后由 iheaing 于 2010-1-29 17:57 编辑 ]

论坛徽章:
0
发表于 2010-06-09 17:17 |显示全部楼层
怎么我的到了postadmin这一步就不行了呢
pro.jpg

论坛徽章:
0
发表于 2010-06-17 13:24 |显示全部楼层
postadmin不能连接数据库,看看postadmin的配置文件中关于连接的一段。

论坛徽章:
0
发表于 2010-07-24 10:02 |显示全部楼层
终于找到一管新的,做得好的文章了。感谢分享!!!

论坛徽章:
0
发表于 2010-07-24 10:15 |显示全部楼层
回复 1# iheaing


    请问一下,“无法开启 any SMTP servers 11.92.0.185 at port 25”  这是哪里的配置错了啊?
error.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP