如何配置ISP邮件服务器虚拟用户/域在Centos 4.5使用Postfix,Dovecot,MySQL,phpMyAdmin,TLS / SSL

如何使用Postfix,Dovecot,MySQL,phpMyAdmin,TLS / SSL在虚拟用户/域上配置ISP邮件服务器

本教程介绍如何设置Postfix是SMTP服务的邮件服务器,Dovecot提供IMAP和POP服务。 用户是虚拟的,用户信息存储在MySQL数据库中。

预配置要求:

1.名称为cnode1.rnd.pk,IP地址为(172.16.4.80)为eth0。 (您可以分配您选择的IP地址和主机名。)

2.创建一个别名eth0:0。 分配IP地址(172.16.4.81)。 (您可以分配您选择的IP地址。)

3.在/ etc / hosts中输入您的主机名和IP。 在我的例子中,我的/ etc / hosts文件显示

127.0.0.1       localhost.localdomain   localhost
172.16.4.80     cnode1.rnd              cnode1
172.16.4.81     mail.rnd                mail

安装所需的软件包:

我们需要安装我们的邮件服务器的以下软件包:

dovecot-0.99.11-8.EL4(具有数据库支持),postfix-2.2.10-1.1.el4.centos.mysql(具有数据库支持)和squirrelmail。

首先安装dovecot。 如果您在dovecot之前安装了postfix,那么由于软件包冲突,dovecot将不会安装在您的系统上。

yum install -y dovecot

这将安装dovecot以及依赖关系(mysql和postgresql)。

2.然后从centosplus repos安装postfix(使用mysql支持)和mysql-server-5。

yum --enablerepo=centosplus install postfix mysql-server
yum install -y squirrelmail

这将安装postfix以及依赖关系mysql-5和postgresql。 我们的安装部分现已完成。 转到我们的下一个部分,即配置。

组态:

SMTP-AUTH / TLS

首先我们配置SMTP-AUTH和TLS。 对于这个编辑/usr/lib/sasl2/smtpd.conf与你最喜欢的编辑器。

vi /usr/lib/sasl2/smtpd.conf

并进行如下更改。

pwcheck_method: saslauthd
mech_list: plain login

创建目录,然后创建私钥,最后创建证书。

mkdir -p /etc/ssl/mycompany/mailserver/
cd /etc/ssl/mycompany/mailserver/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

已创建私钥和证书。 后来我们会告诉postfix来使用它们。

MySQL:

我们现在将创建一个名为mail的数据库,为此我们将发出下面给出的命令; 我们的第一步是为管理用户设置密码。

mysqladmin -u root password newpassword

用你的密码替换新密码短语。 在我们的案例中,我们将使用用户“mail”进行所有与数据库相关的操作。 (选择更新并插入数据库。)

mysql -u root -p

输入密码,你将在MySQL提示符下(mysql>)

CREATE DATABASE mail;

将邮件的所有权限授予用户邮件。

GRANT ALL PRIVILEGES ON mail.* TO 'mail'@'localhost' IDENTIFIED BY 'mail';
FLUSH PRIVILEGES;
quit

设置邮件用户的密码。 这将通过以下声明完成。

msqladmin -u mail password newpassword

然后,我们将为包含域,用户,别名和邮箱信息的新数据库(邮件)创建必要的表。

mysql -u mail -p

在提供密码后,您将在MySQL提示符下。

show databases;

它将显示所有数据库,包括我们的“邮件”数据库。 我们将使用“邮件”。

USE mail;

1.创建域表。

CREATE TABLE domain ( domain varchar(255) NOT NULL default '', description varchar(255) NOT NULL default '', aliases int(10) NOT NULL default '0', mailboxes int(10) NOT NULL default '0', maxquota int(10) NOT NULL default '0', transport varchar(255) default NULL, backupmx tinyint(1) NOT NULL default '0', created datetime NOT NULL default '0000-00-00 00:00:00', modified datetime NOT NULL default '0000-00-00 00:00:00', active tinyint(1) NOT NULL default '1', PRIMARY KEY (domain), KEY domain (domain) ) TYPE=MyISAM COMMENT=' Virtual Domains';

2.第二个最重要的表是邮箱,所以创建邮箱。

CREATE TABLE mailbox ( username varchar(255) NOT NULL default '', password varchar(255) NOT NULL default '', name varchar(255) NOT NULL default '', maildir varchar(255) NOT NULL default '', quota int(10) NOT NULL default '0', domain varchar(255) NOT NULL default '', created datetime NOT NULL default '0000-00-00 00:00:00', modified datetime NOT NULL default '0000-00-00 00:00:00', active tinyint(1) NOT NULL default '1', PRIMARY KEY (username), KEY username (username) ) TYPE=MyISAM COMMENT='Virtual Mailboxes';

3.创建别名表。

CREATE TABLE alias ( address varchar(255) NOT NULL default '', goto text NOT NULL, domain varchar(255) NOT NULL default '', created datetime NOT NULL default '0000-00-00 00:00:00', modified datetime NOT NULL default '0000-00-00 00:00:00', active tinyint(1) NOT NULL default '1', PRIMARY KEY (address), KEY address (address) ) TYPE=MyISAM COMMENT='Virtual Aliases';

我们已经创建了必要的表,所以退出MySQL。

quit

Postfix MySQL:

Postfix需要知道哪里和如何查找所有邮箱相关信息。 为此,我们将在/ etc / postfix下创建以下文件。 Postfix的最新版本可能会使用它,而不是其他语句,在这种情况下,只需将所有行注释出来,并取消评论最后一行。

1.创建文件mysql_virtual_alias_maps.cf,将电子邮件从一个电子邮件地址转发到另一个

vi /etc/postfix/mysql_virtual_alias_maps.cf
 
user = mail
password = mail
hosts = localhost
dbname = mail
table = alias
select_field = goto
where_field = address
additional_conditions = and active = '1'
#query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

2.创建文件mysql_virtual_domains_maps.cf,为虚拟域映射。 使用此文件中提供的信息查询虚拟域。

vi /etc/postfix/mysql_virtual_domains_maps.cf
user = mail
password = mail
hosts = localhost
dbname = mail
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'

3.创建文件mysql_virtual_mailbox_maps.cf。 通常将电子邮件地址映射到硬盘上用户邮箱的位置。 如果您使用Postfix内置的虚拟传输代理将传入的电子邮件保存到硬盘,则可以查询邮箱路径。

vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = mail
password = mail
hosts = localhost
dbname = mail
table = mailbox
select_field = CONCAT(domain,'/',maildir)
where_field = username
additional_conditions = and active = '1'
#query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

4.最后创建文件mysql_virtual_mailbox_limit_maps.cf将用于映射用户邮箱配额限制。

vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = mail
password = mail
hosts = localhost
dbname = mail
table = mailbox
select_field = quota
where_field = username
additional_conditions = and active = '1'
#query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'

Postfix:

在Postfix配置部分,我们将编辑位于postfix(/ etc / postfix)配置目录中的main.cf文件,输入Postfix所需的一些基本信息。

mv /etc/postfix/main.cf /etc/postfix/main.cf.orig
vi /etc/postfix/main.cf
############## Postfix###############
smtpd_banner = $myhostname
biff = no
append_dot_mydomain = no
relayhost =
mynetworks = 172.16.4.81
inet_interfaces = 172.16.4.81
mailbox_size_limit = 0
recipient_delimiter = +
alias_database = hash:/etc/postfix/aliases
alias_maps = $alias_database
myhostname = cnode1.rnd
mydomain = rnd
myorigin = $myhostname
mydestination = $myhostname, localhost.$mydomain, $transport_maps
mail_spool_directory = /var/spool/mail
debug_peer_level = 2
debugger_command =
  PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
  xxgdb  $daemon_directory/$process_name $process_id & sleep 5
disable_vrfy_command = no
readme_directory = /usr/share/doc/postfix-2.2.10/README_FILES
sample_directory = /usr/share/doc/postfix-2.2.10/samples
sendmail_path = /usr/sbin/sendmail
html_directory = no
setgid_group = postdrop
command_directory = /usr/sbin
manpage_directory = /usr/share/man
daemon_directory = /usr/libexec/postfix
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix
unknown_local_recipient_reject_code = 450
####################postfix section ends here###############

Postfix虚拟用户信息:

再次,我们将编辑main.cf文件以添加对虚拟用户的支持。 在我的情况下,“virtual_minimum_uid”和“virtual_uid_maps”指向用户ID 150,这是我专门用于处理虚拟邮件的用户。 它使用带有默认gid 12的标准“邮件”组。因此,首先通过发出useradd命令或adduser来创建用户。

useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c “Virtual mailbox” vmail
chmod 770 /var/vmail/
chown vmail:mail /var/vmail
vi /etc/postfix/main.cf
#######################Virtual Domains Users and mailboxes###############
virtual_mailbox_domains = mysql:$config_directory/mysql_virtual_domains_maps.cf
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = mysql:$config_directory/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = mysql:$config_directory/mysql_virtual_alias_maps.cf
virtual_minimum_uid = 150
virtual_uid_maps = static:150
virtual_gid_maps = static:12
##############################Virtual section of main.cf ends##############

Postfix SASL / TLS认证:

最后,我们将再次编辑main.cf文件以启用SASL / TLS身份验证。 以前我们创建了一些证书,我们将在这里使用它们来保护邮件服务器。

vi /etc/postfix.main.cf
#################### SASL/TLS Authentication###########################
######SASL PART#########
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain =
smtpd_recipient_restriction = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
######TLS PART###########
smptpd_tls_cert_file = /etc/ssl/rnd/mailserver/smtpd.crt
smtpd_tls_key_file = /etc/ssl/rnd/mailserver/smtpd.key
smtpd_tls_CAfile = /etc/ssl/rnd/mailserver/cacert.pem
smtp_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_received_header = no
smtp_tls_note_starttls_offer = yes
smtpd_tls_loglevel = 1
tls_random_source = dev:/dev/urandom
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_recieved_header = yes
###########################SASL/TLS Authentication ends here#############

为了方便起见,我分三个部分(Postfix,虚拟域 - 用户和邮箱,SASL / TLS-Authentication}。 SASL / TLS-Authentication进一步分为(SASL-PART和TLS-PART)。 为了显示每个部分及其参数,我已经编辑了相同的文件三次。 现在将/ etc / aliases/etc/aliases.db复制/ etc / postfix /并运行newaliases。

cp /etc/aliases* /etc/postfix/
newaliases

Dovecot IMAP和POP:

让我们配置提供POP3和IMAP服务的Dovecot。 Dovecot的配置文件是/etc/dovecot.conf。 我们将其重命名为dovecot.conf.orig,并创建我们自己的。 要使用dovecot处理虚拟用户,我们将创建文件/etc/dovecot-mysql.conf

vi /etc/dovecot-mysql.conf
######dove-mysql.conf should look like this##########
db_host = 127.0.0.1
db_port = 3306
db      = mail
db_user = mail
db_passwd = mail
db_client_flags = 0
default_pass_scheme = PLAIN
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, 150 AS uid, 12 AS gid, concat('dirsize:storage=',quota) AS quota FROM mailbox WHERE username ='%u' AND active ='1'
####################ends here####################

现在移动配置dovecot.conf,使用mysql_auth方法验证虚拟用户。 请记住,正常的Linux用户无法登录到邮件服务器。 因为我们的dovecot配置中尚未启用Pam身份验证方法。 此外,first_valid_uid和last_valid_uid也设置为150,这意味着只有具有uid 150的用户才能登录。Pop3和pop3s协议可用。

mv /etc/dovecot.conf /etc/dovecot.conf.orig
vi /etc/dovecot.conf
##############dovecot configured to work with virtual users############
base_dir = /var/run/dovecot/
protocols = imap pop3 imaps pop3s
imap_listen = [::]
pop3_listen = [::]
login_dir = /var/run/dovecot-login
login = imap
login = pop3
default_mail_env = mbox:/var/vmail/%d/%n
mbox_locks = fcntl
log_timestamp = "%Y-%m-%d %H:%M:%S "
log_path = /var/log/maillog
mail_extra_groups = mail
first_valid_uid = 150
last_valid_uid = 150
maildir_copy_with_hardlinks = yes
auth = mysql_auth
auth_userdb = mysql /etc/dovecot-mysql.conf
auth_passdb = mysql /etc/dovecot-mysql.conf
####################################ends here######################

之后,我们将在/etc/dovecot-mysql.conf上设置所有权和访问权限

chmod 600 /etc/dovecot/*.conf
chown vmail /etc/dovecot/*.conf

松鼠配置:

转到squirrelmail config目录并运行config.pl。

cd /usr/share/squirrelmail/config/
/conf.pl

它会显示一些这样的选择:

松鼠邮件配置:阅读:config.php(1.4.0)------------------------------------- --------------------

主菜单 -

组织偏好

2.服务器设置

3.文件夹默认值

4.一般选项

主题

地址簿

7.消息(MOTD)

8.插件

9.数据库

10.语言

D.为特定IMAP服务器设置预定义的设置

C.打开颜色

S保存数据

Q退出命令>>

在命令提示符下键入1并设置“组织偏好设置”。 这里显示我的设置。 你可以选择自己的。

组织名称:研发部

组织标志:../images/sm_logo.png

组织 标识宽度/高度:(308/111)

组织名称:研究与开发

5.登出页面:http://mail.rnd

顶部框架:_top

7.提供商链接:http://mail.rnd

8.供应商名称:研发

保存设置并返回主菜单。 现在在命令提示符下键入2,并在服务器设置菜单中提供信息。

>>命令2我的下面显示。

域:mail.rnd

反转时间:假

3. Sendmail或SMTP:SMTP

A.更新IMAP设置:mail.rnd:143(uw)

B.更新SMTP设置:mail.rnd:25

配置squirrelmail非常容易,因为它是菜单驱动。 希望你会自己做

HTTP部分:

要开始使用mailserver web前端,我们将编辑文件/etc/httpd/conf/httpd.conf。

vi /etc/httpd/conf/httpd.conf

并附上下面给出的陈述。

<VirtualHost 172.16.4.81:80>
DocumentRoot /usr/share/squirrelmail
ServerName mail.rnd
</VirtualHost>

保存配置并退出。

创建虚拟用户和域:

现在我们将在我们的邮件数据库中创建虚拟域和虚拟用户。

mysql -u mail -p

输入密码,你将在mysql>提示符下。

USE mail;

首先使用下面给出的命令在域表(mail.rnd)中创建一个虚拟域。

INSERT INTO domain (domain,description,aliases,mailboxes,maxquota,transport,backupmx,active) VALUES ('mail.rnd','Virtual domain','10','10', '0','virtual', '0','1');

现在在邮箱表中创建两个虚拟用户。 我已经创建(mike@mail.rnd&john@mail.rnd)作为mike和john的用户名。

INSERT INTO mailbox (username,password,name,maildir,quota,domain,active) VALUES ('john@mail.rnd','mypassword', 'John Smith ','john/', '0','mail.rnd','1');
INSERT INTO mailbox (username,password,name,maildir,quota,domain,active) VALUES ('mike@mail.rnd','mypassword', 'Mike Tyson','mike/', '0','mail.rnd','1');
quit

现在我们已经创建了虚拟用户和虚拟域,我们想通过登录并将邮件从一个用户帐户发送到另一个用户来测试我们的邮件服务器。 所以让我们开始Dovecot,Postfix,MySQL和webserver守护进程。 另外我们希望他们应该在下次重新启动时开始。 为此,我们发出以下命令。

chkconfig –level 235 mysqld on
chkconfig –level 235 saslauthd on
chkconfig –level 235 postfix on
chkconfig –level 235 dovecot on
chkconfig –level 235 httpd on
/etc/init.d/saslauthd start
/etc/init.d/mysqld start
/etc/init.d/postfix start
/etc/init.d/dovecot start
/etc/init.d/httpd start

最后启动浏览器并转到http://mail.rnd并输入用户名和密码,然后单击登录。 并享受与您的邮件服务器玩。

phpMyAdmin:

phpMyAdmin是一个功能强大且易于使用的前端。 phpMyAdmin的rpm存在于DAG存储库中。 去添加DAG存储库。 如果尚未安装,请安装phpmyadmin和php-mysql。

yum install -y phpmyadmin php-mysql

在此之后启动浏览器并在地址栏中输入http://127.0.0.1。 输入用户名和密码并开始使用。 /etc/httpd/conf.d/phpmyadmin.conf具有查找phpmyadmin的信息。 如果失败,您可以通过编辑/etc/httpd/conf/httpd.conf文件创建一个虚拟别名。

vi /etc/httpd/conf/httpd.conf
<VirtualHost 127.0.0.1>
DocumentRoot /usr/share/phpmyadmin
ServerName localhost.localdomin
</VirtualHost>

享受使用phpMyAdmin创建用户,域和别名。

参考文献:

http://johnny.chadda.se/2007/04/15/mail-server-howto-postfix-and-dovecot-with-mysql-and-tlsssl-postgrey-and-dspam/

http://workaround.org/articles/ispmail-etch/#step-2-create-the-database-and-user

http://www.nomoa.com/articles/Setting_up_your_own_Mail_Server

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏