这个领域我一直没有涉足过. 之前只是在使用 qqmail, 163 mail, 不过现在这两者似乎开始不支持 自定义域名了. 一个域名邮箱一千块,没有啥技术含量(来自软件程序员的藐视... @.@ ) 所以我打算自己搭建了.
参考: https://www.howtoforge.com/tutorial/perfect-server-ubuntu-18-04-nginx-bind-dovecot-and-ispconfig-3/
已经说的非常明确了.
1. 注册. 我选择的是 linode, google cloud 太TMD贵了.... linode 2G内存. 一个月 20$. 好便宜
2. 安装 ubuntu 18
3. apt-get update, apt-get upgrade, 修改 SSH端口号.
4. dpkg-reconfigure dash ,提问时,选择 No
5. 干掉 apparmor.
service apparmor stop
update-rc.d -f apparmor remove
apt-get remove apparmor apparmor-utils
6. 同步系统时钟
apt-get -y install ntp ntpdate
7.
service sendmail stop; update-rc.d -f sendmail remove (对于干净系统来说, 不需要这个)
apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo
7.1 提问: internal site.
7.2 system mail name: my.server
7.3 修改配置文件:/etc/postfix/master.cf 增加下面的内容. ( -o 前面一定要有空格啊亲)
smtp inet n - y - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject
7.4 重启 postfix: service postfix restart
7.5 编辑 数据库(类似 mysql 的 mariadb) nano /etc/mysql/mariadb.conf.d/50-server.cnf
注释掉: bind-address = 127.0.0.1 这句话. (前面保证加上# 就好了 )
7.6 mysql_secure_installation 做一些配置就好了.
7.7 echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root
7.8 nano /etc/mysql/debian.cnf 把这个文件中的password填上 .
7.9 重启 数据库: service mysql restart (Maria DB 也是这个命令)
可以使用这个命令查看mysql是否在运行: netstat -tap | grep mysql
8. 安装一系列的 软件: Amavisd-new, SpamAssassin, And ClamAV
8.1 apt-get -y install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl postgrey
8.2 service spamassassin stop
update-rc.d -f spamassassin remove
freshclam (这个命令会报错,没关系, 只要有这样的进程跑着就可以了 )
service clamav-daemon start
8.3 为 amavisd 打补丁
cd /tmp
wget https://git.ispconfig.org/ispconfig/ispconfig3/raw/stable-3.1/helper_scripts/ubuntu-amavisd-new-2.11.patch
cd /usr/sbin
cp -pf amavisd-new amavisd-new_bak
patch < /tmp/ubuntu-amavisd-new-2.11.patch
9. 安装 XMPP服务器
9.1
apt-get -y install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks
luarocks install lpc
9.2 安装 Metronome.
adduser --no-create-home --disabled-login --gecos 'Metronome' metronome
cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make install
10. 安装 nginx
10.1 apt-get install nginx
service nginx start
apt-get -y install php7.2-fpm
apt-cache search php7.2
apt-get -y install php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi php-pear mcrypt imagemagick libruby php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl memcached php-memcache php-imagick php-gettext php7.2-zip php7.2-mbstring php-soap php7.2-soap
10.2 编辑: /etc/php/7.2/fpm/php.ini
[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Asia/Shanghai"
[...]
10.3 service php7.2-fpm reload
10.4 apt-get -y install fcgiwrap
10.5 apt-get -y install phpmyadmin php-mbstring php-gettext
这个时候会有两个窗口需要选择:
Web server to reconfigure automatically: <-- select none (because only apache2 and lighttpd are available as options) 就是, 啥也不选, (不要在对应选项上按空格) 然后按OK就行.
MySQL application password for phpmyadmin: <-- Press Enter 这里就是输入phpadmin的密码.
11.
apt-get -y install hhvm
apt-get -y install certbot
certbot register
apt-get -y install mailman 这里至少选择一个语言(英语)
newlist mailman 从管理员的视角查看. 所以这一步会创建一个 mailman的管理员账号, 记住用户名和密码1
vim /etc/aliases