zoukankan      html  css  js  c++  java
  • 在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/

  • 相关阅读:
    C语言处理中文 大萝卜的专栏 博客频道 CSDN.NET
    Coursera
    分享:Concurrency Kit 0.2.14 发布,C 并发工具包
    tox: virtualenvbased automation of test activities
    C语言处理中文
    detox 0.9 : Python Package Index
    分享:Concurrency Kit 0.2.14 发布,C 并发工具包
    ThreadPool的使用
    C Cheat Sheet
    tox 1.4.2 : Python Package Index
  • 原文地址:https://www.cnblogs.com/a5idc/p/13728572.html
Copyright © 2011-2022 走看看