香港服务器香港服务器租用

在Ubuntu 18.04上使用PostfixAdmin设置邮件服务器

在本教程中,我们将介绍在Ubuntu 18.04上使用Postfix,Dovecot,SQLite和PostfixAdmin安装邮件服务器所需的步骤。
PostfixAdmin是一个基于Web的免费界面。使用PostfixAdmin,我们可以为许多用户配置和管理基于Postfix的电子邮件服务器。
Postfix是一种邮件传输代理(MTA),可以在Internet上的不同邮件服务器之间中继邮件。
Dovecot是一种流行的本地传递代理(LDA),它将从后缀接收到的邮件传递到其最终目的地(邮箱,程序等)。
将这三个软件包组合在一起,您的服务器将可以发送和接收电子邮件,以及用于管理电子邮件服务器的基于Web的界面。
要求:
就本教程而言,我们将使用Ubuntu 18.04 。
还需要完全SSH根访问权限或具有sudo特权的用户。
步骤1、入门设置
使用以下命令以root用户身份通过​​SSH连接到服务器:
ssh root@IP_ADDRESS -p PORT_NUMBER
并将IP_ADDRESS和PORT_NUMBER替换为您的实际服务器IP地址和SSH端口号。
在开始安装之前,您需要将系统软件包更新为最新版本。
您可以通过运行以下命令来执行此操作:
apt-get update
apt-get upgrade
步骤2、创建系统用户
在创建系统用户之前,我们需要安装一些必需的软件包。
sudo apt-get -y install wget nano dbconfig-common sqlite3
现在,我们将使用以下命令创建一个新的系统用户。该用户将是所有邮箱的所有者。
sudo useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c "Virtual Mail User" vmail
sudo mkdir -p /var/vmail
sudo chmod -R 770 /var/vmail
sudo chown -R vmail:mail /var/vmail
步骤3、安装PHP 7.3和所有必需的PHP模块
我们将使用以下命令安装最新稳定版本的PHP 7.3和所有必需的PHP模块:
apt install software-properties-common python-software-properties
add-apt-repository ppa:ondrej/php
apt update
sudo apt-get install php7.3 php7.3-cli php7.3-common php-fpm php-cli php7.3-mbstring php7.3-imap php7.3-sqlite3
一旦安装了这些,我们就可以安装Nginx,它将用作PostfixAdmin的Web服务器。
步骤4、安装和配置Nginx
要从官方Ubuntu存储库安装Nginx,我们将运行以下命令:
sudo apt-get install nginx
现在,我们需要创建一个具有以下内容的新Nginx服务器块。首先,打开文件:
sudo nano /etc/nginx/sites-available/postfixadmin.your_domain.com
然后添加以下内容:

server {
listen 80;
server_name postfixadmin.your_domain.com;
root /var/www/postfixadmin-3.0;
index index.php;
charset utf-8;


location / {
try_files $uri $uri/ index.php;
}

location ~* \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
}

 

确保使用您的实际注册域名替换your_domain.com。
为了激活服务器块,我们将创建一个符号链接:
sudo ln -s /etc/nginx/sites-available/postfixadmin.your_domain.com /etc/nginx/sites-enabled/postfixadmin.your_domain.com
为了使Nginx意识到这一点,我们需要重新启动它。
sudo service nginx restart
步骤5、安装和配置PostfixAdmin
PostfixAdmin支持MySQL,PostgreSQL和SQLite数据库。在本教程中,我们将使用SQLite作为我们的数据库系统。
现在,我们将下载PostfixAdmin并将其解压缩到/var/www/目录中:
wget -q -O - "http://downloads.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-3.0/postfixadmin-3.0.tar.gz" | sudo tar -xzf - -C /var/www
打开邮件配置文件并编辑以下值:

sudo nano /var/www/postfixadmin-3.0/config.inc.php
$CONF['configured'] = true;
$CONF['database_type'] = 'sqlite';
$CONF['database_name'] = '/var/vmail/postfixadmin.db';
// $CONF['database_host'] = 'localhost';
// $CONF['database_user'] = 'postfix';
// $CONF['database_password'] = 'postfixadmin';
// $CONF['database_name'] = 'postfix';

$CONF['domain_path'] = 'NO';
$CONF['domain_in_mailbox'] = 'YES';

现在,更改文件夹的所有者,使其属于Web服务器:
sudo chown -R www-data: /var/www/postfixadmin-3.0
然后,我们将创建SQLite数据库:
sudo touch /var/vmail/postfixadmin.db
sudo chown vmail:mail /var/vmail/postfixadmin.db
sudo usermod -a -G mail www-data
如果一切设置正确,则应打开浏览器并转到:
https://postfixadmin.your_domain.com/setup.php
您应该看到类似以下的内容:
Depends on: SQLite – OK
Testing database connection – OK – sqlite://:xxxxx@//var/vmail/postfixadmin.db
要创建新的管理员用户,请运行以下命令:
bash /var/www/postfixadmin-3.0/scripts/postfixadmin-cli admin add admin@your_domain.com --password strong_password --password2 strong_password --superadmin 1 --active 1
确保使用实际的强密码替换strong_password。
如果您不想使用命令行执行此操作,还可以从PostfixAdmin Web界面创建一个新的admin用户。
步骤6、安装和配置Postfix
我们可以使用以下命令安装Postfix:
sudo apt-get install postfix
我们需要创建以下文件:
sudo nano /etc/postfix/sqlite_virtual_alias_maps.cf
将以下内容添加到文件中:
dbpath = /var/vmail/postfixadmin.db
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
现在是下一个文件:
sudo nano /etc/postfix/sqlite_virtual_alias_domain_maps.cf
添加到它:
dbpath = /var/vmail/postfixadmin.db
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
保存该文件,然后添加下一个文件:
sudo nano /etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf
将此内容插入其中:
dbpath = /var/vmail/postfixadmin.db
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = printf('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
保存并关闭文件。让我们创建下一个:
sudo nano /etc/postfix/sqlite_virtual_domains_maps.cf
将此添加到文件中:
dbpath = /var/vmail/postfixadmin.db
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
保存并再次关闭。再一次,让我们创建所需的下一个文件。
sudo nano /etc/postfix/sqlite_virtual_mailbox_maps.cf
这就是应该添加的内容:
dbpath = /var/vmail/postfixadmin.db
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
到最后一个文件。使用以下命令创建它:
sudo nano /etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf
然后添加到它:
dbpath = /var/vmail/postfixadmin.db
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = printf('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
最后,保存并关闭文件。
现在,我们将通过执行以下命令来编辑 main.cf 配置文件:
postconf -e "myhostname = $(hostname -A)"
我们需要编辑文件,使其看起来像这样。我们将添加刚刚创建的所有文件:

postconf -e "virtual_mailbox_domains = sqlite:/etc/postfix/sqlite_virtual_domains_maps.cf"
postconf -e "virtual_alias_maps = sqlite:/etc/postfix/sqlite_virtual_alias_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_catchall_maps.cf"
postconf -e "virtual_mailbox_maps = sqlite:/etc/postfix/sqlite_virtual_mailbox_maps.cf, sqlite:/etc/postfix/sqlite_virtual_alias_domain_mailbox_maps.cf"

postconf -e "smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem"
postconf -e "smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key"
postconf -e "smtpd_use_tls = yes"
postconf -e "smtpd_tls_auth_only = yes"

postconf -e "smtpd_sasl_type = dovecot"
postconf -e "smtpd_sasl_path = private/auth"
postconf -e "smtpd_sasl_auth_enable = yes"
postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination"

postconf -e "mydestination = localhost"
postconf -e "mynetworks = 127.0.0.0/8"
postconf -e "inet_protocols = ipv4"

postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"

完成后,保存并关闭文件。
另外,我们需要编辑master.cf文件。像这样打开文件:
sudo nano /etc/postfix/master.cf
找到提交的inet n和smtps inet n部分,并确保文件看起来像这样。

smtp inet n - y - - smtpd
#smtp inet n - y - 1 postscreen
#smtpd pass - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
# -o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING


保存并关闭文件。现在重新启动Postfix服务并启用它。
systemctl enable postfix
systemctl restart postfix
步骤7、安装和配置Dovecot
现在已完成所有其他设置,我们需要安装具有SQLite支持的Dovecot:
sudo apt-get install dovecot-imapd dovecot-lmtpd dovecot-pop3d dovecot-sqlite
我们需要打开 /etc/dovecot/conf.d/10-mail.conf 文件并更改以下值:

mail_location = maildir:/var/vmail/%d/%n
mail_privileged_group = mail
mail_uid = vmail
mail_gid = mail
first_valid_uid = 150
last_valid_uid = 150

然后,我们需要打开 /etc/dovecot/conf.d/10-auth.conf 文件并更改以下值,使其看起来像这样:
auth_mechanisms = plain login
#!include auth-system.conf.ext
!include auth-sql.conf.ext
我们将创建一个新 dovecot-sql.conf.ext 文件:
sudo nano /etc/dovecot/dovecot-sql.conf.ext
将其添加为内容:

driver = sqlite
connect = /var/vmail/postfixadmin.db
default_pass_scheme = MD5-CRYPT
password_query = \
SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, \
'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid \
FROM mailbox WHERE username = '%u' AND active = '1'
user_query = \
SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, \
150 AS uid, 8 AS gid, printf('dirsize:storage=', quota) AS quota \
FROM mailbox WHERE username = '%u' AND active = '1'
user_query = \

在 /etc/dovecot/conf.d/10-ssl.conf 文件中,启用SSL支持:
ssl = yes
我们将打开 /etc/dovecot/conf.d/15-lda.conf 文件并设置 postmaster_address 电子邮件地址。
postmaster_address = postmaster@vps.your_domain.com
确保使用域名替换your_domain.com。
另外,我们需要打开/etc/dovecot/conf.d/10-master.conf文件,找到服务lmtp部分,并把它改成这样:
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
然后找到该service auth部分并将其更改为:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
#group = vmail
}
user = dovecot
}
关闭文件,并设置权限:
chown -R vmail:dovecot /etc/dovecot
chmod -R o-rwx /etc/dovecot
启用并重新启动鸽舍服务:
systemctl enable dovecot
systemctl restart dovecot
如果一切设置正确,则应该能够登录到PostfixAdmin Web界面并创建第一个虚拟域和邮箱。A5互联https://www.a5idc.net/

posted @ 2020-09-25 10:21  A5互联  阅读(1043)  评论(0编辑  收藏  举报
江苏镇江高防服务器BGP云服务器