亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

使用ubuntu搭建公網個人郵件服務器(基于postfix,dovecot,mysql)

2020-07-27 18:44:49
字體:
來源:轉載
供稿:網友

前言

本教程基于 ubuntu 18.04(其他的 linux 理論上也是可以的,知識安裝的軟件包不一樣)。用到的主要軟件為:postfix,dovecot,mysql.廢話不多說,下面是教程:

前置條件

  • mysql 數據庫。本教程中使用 mysql 存儲域名,用戶信息等。
  • 域名。需要有域名才能實現向公網發郵件/收郵件。這里以 test.com 為例。
  • ssl 證書。有不少免費的 ssl 證書提供商,或者使用自簽證書,百度即可。

安裝軟件

切換到 root 用戶下,執行以下命令:

apt updateapt install postfix postfix-mysql dovecot-core dovecot-pop3d dovecot-imapd dovecot-lmtpd dovecot-mysql

安裝過程中 postfix 會彈出提示:

這里我們選擇第二項:Internet Site。

接著會有如下提示:

這里填入:test.com

配置mx 解析

在域名提供商增加以下解析:

  • MX 記錄:test.com 指向 服務器IP
  • A 記錄:pop3.test.com 指向 服務器IP
  • A 記錄:smtp.test.com 指向 服務器IP

創建 mysql 數據庫

新建一個數據庫 mailserver,管理賬號為:admin/123456

創建虛擬域表,作為認證域。該表是郵件服務器用以接收郵件的域名:

-- 建立表CREATE TABLE `virtual_domains` (`id` INT NOT NULL AUTO_INCREMENT,`name` VARCHAR(50) NOT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 插入一條記錄insert into virtual_domains values(1,'test.com')

創建用戶表,用于用戶身份認證。

-- 創建用戶表CREATE TABLE `virtual_users` (`id` INT NOT NULL AUTO_INCREMENT,`domain_id` INT NOT NULL,`password` VARCHAR(106) NOT NULL,`email` VARCHAR(120) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `email` (`email`),FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 插入兩個用戶,以md5加密密碼,實際應用中應該選擇強度更高的算法,md5目前以及不安全了insert into virtual_users values(1,1,md5('123456'),'first@test.com');insert into virtual_users values(2,1,md5('123456'),'second@test.com');

創建別名表.該表作用相當于當 source 收到郵件時,該郵件會自動轉發到 destination 上。

-- 創建表CREATE TABLE `virtual_aliases` (`id` int(11) NOT NULL auto_increment,`domain_id` int(11) NOT NULL,`source` varchar(100) NOT NULL,`destination` varchar(100) NOT NULL,PRIMARY KEY (`id`),FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE)ENGINE=InnoDB DEFAULT CHARSET=utf8;-- 插入數據,所有發給first的郵件都會自動轉發給secondinsert into virtual_aliases values(1,1,'first@test.com','second@test.com')

生成 ssl 證書

生成 ssl 證書可參考這一篇http://www.49028c.com/article/60371.htm ,假設證書存放地址為:

  • 公鑰 /etc/letsencrypt/live/test.com/fullchain.pem;
  • 私鑰 /etc/letsencrypt/live/test.com/privkey.pem;

配置 postfix

首選備份 postfix 的默認配置文件,然后編輯main.cf

cp /etc/postfix/main.cf /etc/postfix/main.cf.bakvim /etc/postfix/main.cf

注釋下面的配置:


然后加入如下的配置:

# 使用自己的ssl證書smtpd_tls_cert_file=/etc/letsencrypt/live/test.com/fullchain.pemsmtpd_tls_key_file=/etc/letsencrypt/live/test.com/privkey.pemsmtpd_use_tls=yessmtpd_tls_auth_only = yes# 使用dovecot來做身份認證smtpd_sasl_type = dovecotsmtpd_sasl_path = private/authsmtpd_sasl_auth_enable = yessmtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

修改 myhostname,myorigin 為如下的值:

myhostname = test.commyorigin = $myhostname

修改 mydestination 值為 localhost,以啟動 mysql 中的虛擬域。:

mydestination = localhost

在配置文件的最后加入以下行,確保將郵件投遞給 mysql 表中列出的虛擬域。

virtual_transport = lmtp:unix:private/dovecot-lmtp

最后加入以下三項參數,告知 Postfix 配置虛擬域、用戶和別名

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cfvirtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cfvirtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf

接下來創建上面最后加入的三項參數對應的文件。

創建/etc/postfix/mysql-virtual-mailbox-domains.cf,內容如下:

user = adminpassword = 123456port = 3306hosts = 127.0.0.1dbname = mailserverquery = SELECT 1 FROM virtual_domains WHERE name='%s'

接著重啟 postfix,并測試 postfix 能否找到域,如果成功返回 1:

service postfix restartpostmap -q test.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

創建/etc/postfix/mysql-virtual-mailbox-maps.cf,內容如下:

user = adminpassword = 123456port = 3306hosts = 127.0.0.1dbname = mailserverquery = SELECT 1 FROM virtual_users WHERE email='%s'

接著重啟 postfix,并測試其能否找到郵箱地址,成功返回 1:

service postfix restartpostmap -q first@test.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

最后創建/etc/postfix/mysql-virtual-alias-maps.cf,內容如下:

user = adminpassword = 123456port = 3306hosts = 127.0.0.1dbname = mailserverquery = SELECT destination FROM virtual_aliases WHERE source='%s'

同樣重啟 postfix,驗證能否正確找到別名,并返回:

service postfix restartpostmap -q first@test.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

如果響應使用 587 端口來進行俺的 smtp 通信,需修改/etc/postfix/master.cf 文件:

取消以下行的注釋:

配置 dovecot

postfix 配置完畢,現在來配置 dovecot,首先編輯主配置文件/etc/dovecot/dovecot.conf:

首先確保下面一行是啟用的:

!include conf.d/*.conf

然后在配置文件的最后加入如下配置,啟用各協議:

protocols = imap lmtp pop3

修改/etc/dovecot/conf.d/10-mail.conf,確保存在以下兩個配置:

mail_location = maildir:/var/mail/vhosts/%d/%nmail_privileged_group = mail

上面的配置將郵件存放目錄設置在/var/mail 中,因此將該文件夾的所屬人改為 vmail/vmail.命令如下:

groupadd -g 5000 vmailuseradd -g vmail -u 5000 vmail -d /var/mailchown -R vmail:vmail /var/mail

修改/etc/dovecot/conf.d/10-auth.conf。首先確保如下兩個配置存在且值正確:

disable_plaintext_auth = yesauth_mechanisms = plain login

然后修改配置以禁用系統用戶登陸,并開啟 mysql 支持,如下圖所示:

修改/etc/dovecot/dovecot-sql.conf.ext文件,將內容改成下面的內容:

passdb {driver = sqlargs = /etc/dovecot/dovecot-sql.conf.ext}userdb {driver = staticargs = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n}

修改/etc/dovecot/dovecot-sql.conf.ext:

首選取消 driver 參數注釋并設置為 mysql

driver = mysql

然后取消 connect 行注釋并設置為如下內容:

connect = host=127.0.0.1 port=3306 dbname=mailserver user=admin password=123456

接著取消 default_pass_scheme 行的注釋并改為 MD5

default_pass_scheme = MD5

接著取消 password_query 行的注釋并設置為以下信息:

password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

最后將/etc/dovecot的擁有者改為 vmail:dovecot

chown -R vmail:dovecot /etc/dovecotchmod -R o-rwx /etc/dovecot

修改/etc/dovecot/conf.d/10-master.conf:

首先將 imap-login , pop3-login 下第一個的 port 設置為 0,以禁用非 ssl 加密的 imap 和 pop3 協議,如下圖所示:

然后找到service lmtp將其修改為如下:

service lmtp {unix_listener /var/spool/postfix/private/dovecot-lmtp {mode = 0600user = postfixgroup = postfix}# Create inet listener only if you can't use the above UNIX socket#inet_listener lmtp {# Avoid making LMTP visible for the entire internet#address =#port =#}}

然后找到service auth將其內容修改為如下:

service auth {unix_listener /var/spool/postfix/private/auth {mode = 0666user = postfixgroup = postfix}unix_listener auth-userdb {mode = 0600user = vmail#group =}user = dovecot}

最后找到service auth-worker改為如下內容:

service auth-worker {# Auth worker process is run as root by default, so that it can access# /etc/shadow. If this isn't necessary, the user should be changed to# $default_internal_user.user = vmail}

最后要改的就是/etc/dovecot/conf.d/10-ssl.conf,以開啟 ssl 認證.

首先將 ssl 參數改為 required:

ssl = required

然后設置 ssl 證書路徑就 ok 了,還是用之前的 ssl 證書:

ssl_cert = </etc/letsencrypt/live/test.com/fullchain.pemssl_key = </etc/letsencrypt/live/test.com/privkey.pem

到這里所有的配置都 OK,重啟 postfix,dovecot 后就可以用郵箱客戶端(比如 foxmail)連接了。

service postfix restartservice dovecot restart

結束

配合一個郵件客戶端看似很簡單,實際上還是有很多坑的,看看上面那么多的配置項就知道了,一定要耐心。

如果無法登陸,可以看看 postfix 和 dovecot 的日志報錯情況,再去修改。日志位置在/var/log

注意:

被這個問題困擾了好幾天,未找到解決辦法,最后放棄.

目前很多主機廠商都不支持和其他服務器的 25 端口通信,已知的有(谷歌云,阿里云),這樣就導致在這些機器上搭建的 postfix 郵件服務器,無法向其他的外網郵箱發送郵件,因為無法和其他 smtp 服務器的 25 端口建立連接。貌似是為了避免有人惡意搭建郵件服務器向其他的郵件服務器發送大量的垃圾郵件,從而導致此服務器 IP 被反垃圾郵件組織列入 SML。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久av久久久| 欧美午夜视频一区二区| 久久久久久久久久久久av| 国产丝袜一区视频在线观看| 亚洲成色777777在线观看影院| 91精品国产91久久久久久不卡| 欧美日韩亚洲成人| 成人美女免费网站视频| 国产精品一区二区电影| 久久久电影免费观看完整版| 日韩精品视频在线观看网址| 欧美午夜激情小视频| 国产亚洲视频中文字幕视频| 色综合五月天导航| www.精品av.com| 国产精品日日摸夜夜添夜夜av| 亚洲自拍偷拍一区| 91av在线免费观看视频| 国产日韩在线观看av| 亚洲最大中文字幕| 亚洲精品国产拍免费91在线| 欧美大全免费观看电视剧大泉洋| 亚洲欧洲美洲在线综合| 操人视频在线观看欧美| 国产精品jizz在线观看麻豆| 伊人久久久久久久久久久久久| 欧美大学生性色视频| 午夜精品www| 亚洲欧美成人一区二区在线电影| 亚洲最大福利视频网站| 欧美精品亚州精品| 欧美性猛交xxxx免费看漫画| 91精品久久久久久久久久久久久久| 亚洲国产中文字幕久久网| 亚洲第一福利网| 国产91精品不卡视频| 欧美激情女人20p| 97视频免费在线观看| 欧美激情在线播放| 国产精品久久久久久一区二区| 国产成人精品电影久久久| 中文字幕最新精品| 国内免费精品永久在线视频| 亚洲第一区中文99精品| 最新国产精品拍自在线播放| 国产成人拍精品视频午夜网站| 亚洲男人天堂网站| 国产精品久久久久久久久久ktv| 久久久久久久网站| 久久久女人电视剧免费播放下载| 久久躁日日躁aaaaxxxx| 国产不卡精品视男人的天堂| 亚洲一区二区三区成人在线视频精品| 日韩欧亚中文在线| 国产91精品青草社区| 国产精品男女猛烈高潮激情| 一区三区二区视频| 欧美成人在线免费视频| 国产综合色香蕉精品| 国产精品一区二区av影院萌芽| 国产精品福利网| 91精品国产99久久久久久| 国产精品久久久久福利| 欧美大片va欧美在线播放| 久久久久久69| 欧美综合国产精品久久丁香| 欧美大奶子在线| 国产免费一区二区三区在线观看| 欧美精品国产精品日韩精品| 久久天天躁狠狠躁老女人| 亚洲国产精品资源| 日韩在线观看精品| 日韩动漫免费观看电视剧高清| 91精品国产自产在线老师啪| 尤物yw午夜国产精品视频明星| 狠狠躁夜夜躁久久躁别揉| 国产主播欧美精品| 国产精品第二页| 俺也去精品视频在线观看| 国产一区二区三区丝袜| 欧美日韩在线观看视频小说| 国产精品日日做人人爱| 欧美整片在线观看| 韩国视频理论视频久久| 国产精品久久久久久久久久久久久久| 91在线视频免费| 欧美性猛交丰臀xxxxx网站| 日韩精品极品毛片系列视频| 97国产精品人人爽人人做| 欧美猛交免费看| 精品国产一区二区三区久久久狼| 日韩欧美有码在线| 欧美精品在线网站| 欧美另类极品videosbest最新版本| 欧美精品videosex性欧美| 久久成年人免费电影| 九九热精品视频国产| 精品美女永久免费视频| 亚洲国内精品视频| 91久久久久久久一区二区| 日韩在线播放av| 日本韩国欧美精品大片卡二| 欧美性猛交xxxx乱大交3| 91社影院在线观看| 在线观看国产精品淫| 国产精品免费小视频| 在线看国产精品| 韩剧1988在线观看免费完整版| 亚洲免费视频一区二区| 亚洲aa在线观看| 成人精品一区二区三区电影免费| 精品国产依人香蕉在线精品| 亚洲美女免费精品视频在线观看| 日韩电影中文 亚洲精品乱码| 久久精品视频免费播放| 麻豆乱码国产一区二区三区| 欧美精品性视频| 亚洲成人精品视频| 丁香五六月婷婷久久激情| 精品福利樱桃av导航| 国产精品久久久久7777婷婷| 欧美激情区在线播放| 国产一区二区三区18| 亚洲欧洲午夜一线一品| 日韩中文有码在线视频| 日韩精品免费一线在线观看| 精品久久久久久中文字幕一区奶水| 精品久久中文字幕| 91久久夜色精品国产网站| 欧美成人午夜激情在线| 国产精品va在线播放我和闺蜜| 欧美色道久久88综合亚洲精品| 91精品久久久久久久久中文字幕| 亚洲free性xxxx护士hd| 欧美性感美女h网站在线观看免费| 欧美色道久久88综合亚洲精品| 久久人人爽人人爽人人片亚洲| 亚洲成人动漫在线播放| 日本一区二区在线播放| 91成人福利在线| 精品久久久久久久久久| 亚洲va欧美va国产综合久久| 国内精品久久久久久中文字幕| 欧美日韩成人在线视频| 国产精品91视频| 午夜精品久久久久久久男人的天堂| 欧美电影院免费观看| 91久久在线播放| 精品高清一区二区三区| 欧美激情国产日韩精品一区18| 国产欧美一区二区三区视频| 日韩美女主播视频| 在线国产精品播放| 九九综合九九综合| 国产日韩一区在线| 亚洲欧美成人在线| 尤物九九久久国产精品的分类| 日韩激情视频在线| 综合av色偷偷网| 91精品国产免费久久久久久| 最近2019年手机中文字幕| 欧美极品在线视频| 精品丝袜一区二区三区| 欧美大人香蕉在线|