<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="th">
	<id>https://wiki.thnic.or.th/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Titipong</id>
	<title>Wiki_EAI - ส่วนร่วมของผู้ใช้ [th]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.thnic.or.th/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Titipong"/>
	<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/th/%E0%B8%9E%E0%B8%B4%E0%B9%80%E0%B8%A8%E0%B8%A9:%E0%B9%80%E0%B8%A3%E0%B8%B7%E0%B9%88%E0%B8%AD%E0%B8%87%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B9%80%E0%B8%82%E0%B8%B5%E0%B8%A2%E0%B8%99/Titipong"/>
	<updated>2026-10-23T02:49:44Z</updated>
	<subtitle>ส่วนร่วมของผู้ใช้</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2200</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2200"/>
		<updated>2025-10-16T18:45:07Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://workshop.kon.in.th/download/EAI_Training_2025.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /var/log/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า SMTP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไขไฟล์ roundcube config &amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ defaults.inc.php การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2199</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2199"/>
		<updated>2025-10-16T17:57:48Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://workshop.kon.in.th/download/EAI_Training_2025.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า SMTP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไขไฟล์ roundcube config &amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ defaults.inc.php การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2198</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2198"/>
		<updated>2025-10-16T17:43:24Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://workshop.kon.in.th/download/EAI_Training_2025.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า SMTP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไขไฟล์ roundcube config &amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ defaults.inc.php การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2197</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2197"/>
		<updated>2025-10-16T17:42:13Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* เอกสารที่เกี่ยวข้อง */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://workshop.kon.in.th/download/EAI_Training_2025.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า SMTP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไขไฟล์ roundcube config &amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ defaults.inc.php การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2196</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2196"/>
		<updated>2025-10-16T09:24:29Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า SMTP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไขไฟล์ roundcube config &amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ defaults.inc.php การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2195</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2195"/>
		<updated>2025-10-16T09:19:18Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า SMTP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไขไฟล์ defaults.inc.php &amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2194</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2194"/>
		<updated>2025-10-16T09:14:26Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า SMTP&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไขไฟล์ roundcube config &amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2193</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2193"/>
		<updated>2025-10-16T09:01:37Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2192</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2192"/>
		<updated>2025-10-16T06:44:19Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;cp /var/www/html/roundcubemail/config/config.inc.php.sample /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2191</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2191"/>
		<updated>2025-10-16T06:42:07Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2190</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2190"/>
		<updated>2025-10-16T05:20:04Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2189</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2189"/>
		<updated>2025-10-16T05:19:20Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai&amp;lt;span color=&#039;green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha&amp;lt;span color=&#039;green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai&amp;lt;span color=&#039;green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai&amp;lt;span color=&#039;green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2188</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2188"/>
		<updated>2025-10-16T05:17:22Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.11-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.11 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2187</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2187"/>
		<updated>2025-10-16T05:03:07Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2186</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2186"/>
		<updated>2025-10-16T05:02:25Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
&lt;br /&gt;
 namespace inbox {&lt;br /&gt;
  type = private&lt;br /&gt;
  separator = /&lt;br /&gt;
  prefix =&lt;br /&gt;
  inbox = yes&lt;br /&gt;
  &lt;br /&gt;
  mailbox Drafts {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Drafts&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Junk {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Junk&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Trash {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Trash&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Sent {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Sent&lt;br /&gt;
  }&lt;br /&gt;
  mailbox Archive {&lt;br /&gt;
    auto = subscribe&lt;br /&gt;
    special_use = \Archive&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 service imap-login {&lt;br /&gt;
  inet_listener imaps {&lt;br /&gt;
    port = 993&lt;br /&gt;
    ssl = yes&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = vmail&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
    unix_listener stats {&lt;br /&gt;
        mode = 0600&lt;br /&gt;
        user = vmail&lt;br /&gt;
    }&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2185</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2185"/>
		<updated>2025-10-16T04:40:26Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2184</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2184"/>
		<updated>2025-10-16T04:39:52Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;mkdir /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2183</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2183"/>
		<updated>2025-10-16T04:27:24Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* ตั้งค่าเวลาของ Mail Server และตรวจสอบ */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 52) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2182</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2182"/>
		<updated>2025-10-16T04:25:27Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2181</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2181"/>
		<updated>2025-10-16T04:24:09Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.11 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.11/roundcubemail-1.6.11-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2180</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2180"/>
		<updated>2025-10-16T04:23:13Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.13&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2179</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2179"/>
		<updated>2025-10-16T04:20:23Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 28.5.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2178</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2178"/>
		<updated>2025-10-16T04:02:45Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.3 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2177</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2177"/>
		<updated>2025-10-15T10:17:55Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: gotoeai@2025&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=Universal_Acceptance_Implementation&amp;diff=2176</id>
		<title>Universal Acceptance Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=Universal_Acceptance_Implementation&amp;diff=2176"/>
		<updated>2025-10-14T15:23:26Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Universal Acceptance = &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
การยอมรับสากลเป็นข้อกำหนดพื้นฐานสำหรับอินเทอร์เน็ตที่รองรับการทำงานหลายภาษาอย่างแท้จริง ซึ่งจะทำให้ผู้ใช้ทั่วโลกสามารถท่องไปในโลกอินเทรอ์เน็ตในภาษาท้องถิ่นได้ นอกจากนี้ยังเป็นกุญแจสำคัญในการปลดล็อกศักยภาพของโดเมนระดับบนสุดทั่วไป (gTLD) เพื่อส่งเสริมการแข่งขัน ทางเลือกของผู้บริโภค และนวัตกรรมในอุตสาหกรรมชื่อโดเมน&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
เพื่อบรรลุการยอมรับสากล แอปพลิเคชันและระบบอินเทอร์เน็ตต้องปฏิบัติต่อโดเมนระดับบนสุด (TLD) ทั้งหมดในลักษณะที่สอดคล้องกัน ซึ่งรวมถึง gTLD ใหม่และ TLD ที่เป็นสากล โดยต้องยอมรับ ตรวจสอบ จัดเก็บ ประมวลผล และแสดงชื่อโดเมนทั้งหมด ได้อย่างถูกต้อง&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
ขณะนี้เป็นเวลาที่จะทำให้ระบบของคุณพร้อมสำหรับการยอมรับสากล และสร้างอินเทอร์เน็ตแห่งอนาคตสำหรับทุกคนอย่างแท้จริง&lt;br /&gt;
&lt;br /&gt;
= UA สำหรับผู้ดูแลระบบ = &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== เอกสารทางเทคนิค === &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
อ้างอิงจาก [https://uasg.tech/information/developers/ Information for Developers] ในเว็บไซต์ของ [[Universal Acceptance Steering Group]] (UASG)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation [https://uasg.tech/wp-content/uploads/documents/UASG004-en-digital.pdf UASG 004] Use cases สำหรับนักพัฒนาในการประเมินความพร้อมของระบบในการยอมรับสากล&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation - Data [https://uasg.tech/wp-content/uploads/2020/07/UASG004-en-digital.txt UASG 004A] ข้อมูลสำหรับสำหรับนักพัฒนาสำหรับการประเมินความพร้อมในการยอมรับสากลที่อธิบายใน UASG 004 (ชื่อโดเมนและอีเมลจำนวน 82 ชื่อ)&lt;br /&gt;
&lt;br /&gt;
=== คู่มือพัฒนา EAI Mail Server === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
มูลนิธิ THNIC ได้ศึกษาและดำเนินการด้าน UA มาตั้งแต่ปี 2560 และได้รวบรวมความรู้ในการพัฒนาอีเมลเซิร์ฟเวอร์ จัดทำเป็นคู่มือดังต่อไปนี้&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24|คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24]] : ตุลาคม 2567 (อัพเดตล่าสุด 1 ตุลาคม  2568)&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน Ubuntu 22|คู่มือการพัฒนา EAI Mail Server บน Ubuntu 22]] : ตุลาคม 2565 (อัพเดตล่าสุด 22 เมษายน 2567)&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน Ubuntu 20|คู่มือการพัฒนา EAI Mail Server บน Ubuntu 20]] : มกราคม 2565&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน CentOS 8|คู่มือการพัฒนา EAI Mail Server บน CentOS 8]] : พฤษภาคม 2564&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน CentOS 7|คู่มือการพัฒนา EAI Mail Server บน CentOS 7]] : ธันวาคม 2561 (THNG2018) &lt;br /&gt;
* [[Special:MyLanguage/การศึกษาเรื่อง EAI|การศึกษาเรื่อง EAI]] :  พฤศจิกายน 2560&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
นอกจากนี้ยังได้จัดทำ vdo clip ชุด &#039;&#039;&#039;การพัฒนาอีเมลเซิร์ฟเวอร์ให้รองรับอีเมลภาษาไทย&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
[[File:Eai_series.png|link=https://www.youtube.com/playlist?list=PL9HE8-EElX9LkwVTLoa3Yw4DAYUvbO5yx|eai series]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Special:MyLanguage/พัฒนาบน CentOS 8 (Thai Version)|พัฒนาบน CentOS 8 (Thai Version)]] : December 2018 (THNG2018) &lt;br /&gt;
* [[Special:MyLanguage/EAI Study (Thai Version)|EAI Study (Thai Version)]] | [https://wiki.thnic.or.th/en/Main_Page (English Version)] :  November 2017 (AIT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= UA สำหรับนักพัฒนาซอฟต์แวร์ = &amp;lt;!--T:24--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== เอกสารทางเทคนิค === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
อ้างอิงจาก [https://uasg.tech/information/developers/ Information for Developers] ในเว็บไซต์ของ [[Universal Acceptance Steering Group]] (UASG)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation [https://uasg.tech/wp-content/uploads/documents/UASG004-en-digital.pdf UASG 004] Use cases สำหรับนักพัฒนาในการประเมินความพร้อมของระบบในการยอมรับสากล&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation - Data [https://uasg.tech/wp-content/uploads/2020/07/UASG004-en-digital.txt UASG 004A] ข้อมูลสำหรับสำหรับนักพัฒนาสำหรับการประเมินความพร้อมในการยอมรับสากลที่อธิบายใน UASG 004 (ชื่อโดเมนและอีเมลจำนวน 82 ชื่อ)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* Universal Acceptance Compliance of Programming Language Libraries and Frameworks – 2019 [https://uasg.tech/wp-content/uploads/documents/UASG018-en-digital.pdf UASG 018] รีวิวภาษาในการเขียนโปรแกรมและ framework ต่างๆว่ารองรับแนวปฏิบัติที่ดีของ UA อย่างไร &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* Universal Acceptance Compliance of Programming Language Libraries and Frameworks – 2020 [https://uasg.tech/wp-content/uploads/documents/UASG018A-en-digital.pdf UASG 018A] เอกสารอธิบายผลการทดสอบการรองรับ UA ของภาษา C, C#, Go, Java, Javascript, Python3, Rust and frameworks&lt;br /&gt;
&lt;br /&gt;
=== คู่มือพัฒนาซอฟต์แวร์ให้รองรับ UA === &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
มูลนิธิ THNIC ได้ศึกษาและดำเนินการด้าน UA มาตั้งแต่ปี 2560 และได้รวบรวมความรู้ในการพัฒนาซอฟต์แวร์ระบบ จัดทำเป็นคู่มือดังต่อไปนี้&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์ให้รองรับ UA ด้วยภาษา PHP|คู่มือการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์ให้รองรับ UA ด้วยภาษา PHP]]&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนาซอฟต์แวร์ให้รองรับ UA ด้วยภาษา Java|คู่มือการพัฒนาซอฟต์แวร์ให้รองรับ UA ด้วยภาษา Java]] &lt;br /&gt;
&lt;br /&gt;
=== การทดสอบ UA Readiness === &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
การทดสอบ [https://wiki.thnic.or.th/th/Universal_Acceptance_Implementation#Universal_Acceptance Universal Acceptance] Readiness เป็นการทดสอบว่าโปรแกรมและระบบว่าสามารถจัดการกับชื่อโดเมนและชื่ออีเมลในภาษาต่างๆ โดยเฉพาะสามารถ รับ ตรวจสอบ จัดเก็บ ประมวลผล และแสดงผล ได้อย่างถูกต้อง&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
* Use Case สำหรับการทดสอบ UA Readiness [https://uasg.tech/wp-content/uploads/documents/UASG004-en-digital.pdf UASG004]&lt;br /&gt;
* Data สำหรับการทดสอบ UA Readiness [https://uasg.tech/wp-content/uploads/2020/07/UASG004-en-digital.txt UASG004A]&lt;br /&gt;
* [[Special:MyLanguage/Use Case และ Data สำหรับการทดสอบ .ไทย UA Readiness |Use Case และ Data สำหรับการทดสอบ .ไทย UA Readiness ]]&lt;br /&gt;
&lt;br /&gt;
= การอบรมเชิงปฏิบัติการด้าน UA และ EAI = &amp;lt;!--T:33--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
[https://academy.thnic.or.th/ ศูนย์การเรียนรู้มูลนิธิศูนย์สารสนเทศเครือข่ายไทย (THNIC Academy)] จัดทำโครงการสร้างความพร้อมด้าน Universal Acceptance (UA) และ Email Address Internationalization (EAI) ในประเทศไทย เพื่อเพิ่มความตระหนักถึงความสำคัญของ UA ให้แก่ผู้ที่มีส่วนเกี่ยวข้องไม่ว่าจะเป็นภาคประชาชน หน่วยงานรัฐบาล ภาคธุรกิจ และผู้เกี่ยวข้องกับเทคโนโลยีอินเทอร์เน็ต โดยเฉพาะนักพัฒนาซอฟต์แวร์, นักพัฒนาเว็บไซต์ และผู้ดูแลระบบ รวมทั้งส่งเสริมให้มีการปรับปรุงระบบเพื่อให้ชื่ออีเมลภาษาไทยจะถูกรับและใช้งานได้อย่างถูกต้อง ดูรายละเอียดได้ที่ [https://academy.thnic.or.th/webinars-on-eai/ Webinar และ Training ด้านการยอมรับภาษาไทย]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= APAC EAI Implementation Group = &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
สำหรับผู้สนใจติดตามข้อมูลเกี่ยวกับการพัฒนา และแลกเปลี่ยนความรู้ในการพัฒนาระบบอีเมลภาษาไทย สามารถเข้าร่วมกลุ่ม หรือ ติดตามได้ผ่าน mailling list &lt;br /&gt;
* [[Special:MyLanguage/เกี่ยวกับ apac-eai-ig@icann.org|เกี่ยวกับ apac-eai-ig@icann.org]] &lt;br /&gt;
* [https://mm.icann.org/mailman/listinfo/apac-eai-ig สมัครรับข่าวสารจาก apac-eai-ig@icann.org] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
[[Category: EAI]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=Universal_Acceptance_Implementation&amp;diff=2175</id>
		<title>Universal Acceptance Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=Universal_Acceptance_Implementation&amp;diff=2175"/>
		<updated>2025-10-14T15:22:13Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Universal Acceptance = &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
การยอมรับสากลเป็นข้อกำหนดพื้นฐานสำหรับอินเทอร์เน็ตที่รองรับการทำงานหลายภาษาอย่างแท้จริง ซึ่งจะทำให้ผู้ใช้ทั่วโลกสามารถท่องไปในโลกอินเทรอ์เน็ตในภาษาท้องถิ่นได้ นอกจากนี้ยังเป็นกุญแจสำคัญในการปลดล็อกศักยภาพของโดเมนระดับบนสุดทั่วไป (gTLD) เพื่อส่งเสริมการแข่งขัน ทางเลือกของผู้บริโภค และนวัตกรรมในอุตสาหกรรมชื่อโดเมน&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
เพื่อบรรลุการยอมรับสากล แอปพลิเคชันและระบบอินเทอร์เน็ตต้องปฏิบัติต่อโดเมนระดับบนสุด (TLD) ทั้งหมดในลักษณะที่สอดคล้องกัน ซึ่งรวมถึง gTLD ใหม่และ TLD ที่เป็นสากล โดยต้องยอมรับ ตรวจสอบ จัดเก็บ ประมวลผล และแสดงชื่อโดเมนทั้งหมด ได้อย่างถูกต้อง&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
ขณะนี้เป็นเวลาที่จะทำให้ระบบของคุณพร้อมสำหรับการยอมรับสากล และสร้างอินเทอร์เน็ตแห่งอนาคตสำหรับทุกคนอย่างแท้จริง&lt;br /&gt;
&lt;br /&gt;
= UA สำหรับผู้ดูแลระบบ = &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== เอกสารทางเทคนิค === &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
อ้างอิงจาก [https://uasg.tech/information/developers/ Information for Developers] ในเว็บไซต์ของ [[Universal Acceptance Steering Group]] (UASG)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation [https://uasg.tech/wp-content/uploads/documents/UASG004-en-digital.pdf UASG 004] Use cases สำหรับนักพัฒนาในการประเมินความพร้อมของระบบในการยอมรับสากล&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation - Data [https://uasg.tech/wp-content/uploads/2020/07/UASG004-en-digital.txt UASG 004A] ข้อมูลสำหรับสำหรับนักพัฒนาสำหรับการประเมินความพร้อมในการยอมรับสากลที่อธิบายใน UASG 004 (ชื่อโดเมนและอีเมลจำนวน 82 ชื่อ)&lt;br /&gt;
&lt;br /&gt;
=== คู่มือพัฒนา EAI Mail Server === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
มูลนิธิ THNIC ได้ศึกษาและดำเนินการด้าน UA มาตั้งแต่ปี 2560 และได้รวบรวมความรู้ในการพัฒนาอีเมลเซิร์ฟเวอร์ จัดทำเป็นคู่มือดังต่อไปนี้&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24|คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24]] : พฤศจิกายน 2567 (อัพเดตล่าสุด 11 พฤศจิกายน  2567)&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน Ubuntu 22|คู่มือการพัฒนา EAI Mail Server บน Ubuntu 22]] : ตุลาคม 2565 (อัพเดตล่าสุด 22 เมษายน 2567)&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน Ubuntu 20|คู่มือการพัฒนา EAI Mail Server บน Ubuntu 20]] : มกราคม 2565&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน CentOS 8|คู่มือการพัฒนา EAI Mail Server บน CentOS 8]] : พฤษภาคม 2564&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน CentOS 7|คู่มือการพัฒนา EAI Mail Server บน CentOS 7]] : ธันวาคม 2561 (THNG2018) &lt;br /&gt;
* [[Special:MyLanguage/การศึกษาเรื่อง EAI|การศึกษาเรื่อง EAI]] :  พฤศจิกายน 2560&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
นอกจากนี้ยังได้จัดทำ vdo clip ชุด &#039;&#039;&#039;การพัฒนาอีเมลเซิร์ฟเวอร์ให้รองรับอีเมลภาษาไทย&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
[[File:Eai_series.png|link=https://www.youtube.com/playlist?list=PL9HE8-EElX9LkwVTLoa3Yw4DAYUvbO5yx|eai series]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Special:MyLanguage/พัฒนาบน CentOS 8 (Thai Version)|พัฒนาบน CentOS 8 (Thai Version)]] : December 2018 (THNG2018) &lt;br /&gt;
* [[Special:MyLanguage/EAI Study (Thai Version)|EAI Study (Thai Version)]] | [https://wiki.thnic.or.th/en/Main_Page (English Version)] :  November 2017 (AIT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= UA สำหรับนักพัฒนาซอฟต์แวร์ = &amp;lt;!--T:24--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== เอกสารทางเทคนิค === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
อ้างอิงจาก [https://uasg.tech/information/developers/ Information for Developers] ในเว็บไซต์ของ [[Universal Acceptance Steering Group]] (UASG)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation [https://uasg.tech/wp-content/uploads/documents/UASG004-en-digital.pdf UASG 004] Use cases สำหรับนักพัฒนาในการประเมินความพร้อมของระบบในการยอมรับสากล&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation - Data [https://uasg.tech/wp-content/uploads/2020/07/UASG004-en-digital.txt UASG 004A] ข้อมูลสำหรับสำหรับนักพัฒนาสำหรับการประเมินความพร้อมในการยอมรับสากลที่อธิบายใน UASG 004 (ชื่อโดเมนและอีเมลจำนวน 82 ชื่อ)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* Universal Acceptance Compliance of Programming Language Libraries and Frameworks – 2019 [https://uasg.tech/wp-content/uploads/documents/UASG018-en-digital.pdf UASG 018] รีวิวภาษาในการเขียนโปรแกรมและ framework ต่างๆว่ารองรับแนวปฏิบัติที่ดีของ UA อย่างไร &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* Universal Acceptance Compliance of Programming Language Libraries and Frameworks – 2020 [https://uasg.tech/wp-content/uploads/documents/UASG018A-en-digital.pdf UASG 018A] เอกสารอธิบายผลการทดสอบการรองรับ UA ของภาษา C, C#, Go, Java, Javascript, Python3, Rust and frameworks&lt;br /&gt;
&lt;br /&gt;
=== คู่มือพัฒนาซอฟต์แวร์ให้รองรับ UA === &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
มูลนิธิ THNIC ได้ศึกษาและดำเนินการด้าน UA มาตั้งแต่ปี 2560 และได้รวบรวมความรู้ในการพัฒนาซอฟต์แวร์ระบบ จัดทำเป็นคู่มือดังต่อไปนี้&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์ให้รองรับ UA ด้วยภาษา PHP|คู่มือการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์ให้รองรับ UA ด้วยภาษา PHP]]&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนาซอฟต์แวร์ให้รองรับ UA ด้วยภาษา Java|คู่มือการพัฒนาซอฟต์แวร์ให้รองรับ UA ด้วยภาษา Java]] &lt;br /&gt;
&lt;br /&gt;
=== การทดสอบ UA Readiness === &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
การทดสอบ [https://wiki.thnic.or.th/th/Universal_Acceptance_Implementation#Universal_Acceptance Universal Acceptance] Readiness เป็นการทดสอบว่าโปรแกรมและระบบว่าสามารถจัดการกับชื่อโดเมนและชื่ออีเมลในภาษาต่างๆ โดยเฉพาะสามารถ รับ ตรวจสอบ จัดเก็บ ประมวลผล และแสดงผล ได้อย่างถูกต้อง&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
* Use Case สำหรับการทดสอบ UA Readiness [https://uasg.tech/wp-content/uploads/documents/UASG004-en-digital.pdf UASG004]&lt;br /&gt;
* Data สำหรับการทดสอบ UA Readiness [https://uasg.tech/wp-content/uploads/2020/07/UASG004-en-digital.txt UASG004A]&lt;br /&gt;
* [[Special:MyLanguage/Use Case และ Data สำหรับการทดสอบ .ไทย UA Readiness |Use Case และ Data สำหรับการทดสอบ .ไทย UA Readiness ]]&lt;br /&gt;
&lt;br /&gt;
= การอบรมเชิงปฏิบัติการด้าน UA และ EAI = &amp;lt;!--T:33--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
[https://academy.thnic.or.th/ ศูนย์การเรียนรู้มูลนิธิศูนย์สารสนเทศเครือข่ายไทย (THNIC Academy)] จัดทำโครงการสร้างความพร้อมด้าน Universal Acceptance (UA) และ Email Address Internationalization (EAI) ในประเทศไทย เพื่อเพิ่มความตระหนักถึงความสำคัญของ UA ให้แก่ผู้ที่มีส่วนเกี่ยวข้องไม่ว่าจะเป็นภาคประชาชน หน่วยงานรัฐบาล ภาคธุรกิจ และผู้เกี่ยวข้องกับเทคโนโลยีอินเทอร์เน็ต โดยเฉพาะนักพัฒนาซอฟต์แวร์, นักพัฒนาเว็บไซต์ และผู้ดูแลระบบ รวมทั้งส่งเสริมให้มีการปรับปรุงระบบเพื่อให้ชื่ออีเมลภาษาไทยจะถูกรับและใช้งานได้อย่างถูกต้อง ดูรายละเอียดได้ที่ [https://academy.thnic.or.th/webinars-on-eai/ Webinar และ Training ด้านการยอมรับภาษาไทย]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= APAC EAI Implementation Group = &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
สำหรับผู้สนใจติดตามข้อมูลเกี่ยวกับการพัฒนา และแลกเปลี่ยนความรู้ในการพัฒนาระบบอีเมลภาษาไทย สามารถเข้าร่วมกลุ่ม หรือ ติดตามได้ผ่าน mailling list &lt;br /&gt;
* [[Special:MyLanguage/เกี่ยวกับ apac-eai-ig@icann.org|เกี่ยวกับ apac-eai-ig@icann.org]] &lt;br /&gt;
* [https://mm.icann.org/mailman/listinfo/apac-eai-ig สมัครรับข่าวสารจาก apac-eai-ig@icann.org] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
[[Category: EAI]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2174</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2174"/>
		<updated>2024-11-15T03:43:36Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 auth_username_chars = กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2173</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2173"/>
		<updated>2024-11-15T03:43:16Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT u.email as user, u.password from users u left join forwardings f on u.email = f.source WHERE u.email = &#039;%u&#039; AND source is NULL UNION SELECT f.destination as user, u.password from users u join forwardings f on u.email = f.source WHERE f.source = &#039;%u&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=Universal_Acceptance_Implementation&amp;diff=2172</id>
		<title>Universal Acceptance Implementation</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=Universal_Acceptance_Implementation&amp;diff=2172"/>
		<updated>2024-11-15T03:42:26Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Universal Acceptance = &amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
การยอมรับสากลเป็นข้อกำหนดพื้นฐานสำหรับอินเทอร์เน็ตที่รองรับการทำงานหลายภาษาอย่างแท้จริง ซึ่งจะทำให้ผู้ใช้ทั่วโลกสามารถท่องไปในโลกอินเทรอ์เน็ตในภาษาท้องถิ่นได้ นอกจากนี้ยังเป็นกุญแจสำคัญในการปลดล็อกศักยภาพของโดเมนระดับบนสุดทั่วไป (gTLD) เพื่อส่งเสริมการแข่งขัน ทางเลือกของผู้บริโภค และนวัตกรรมในอุตสาหกรรมชื่อโดเมน&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
เพื่อบรรลุการยอมรับสากล แอปพลิเคชันและระบบอินเทอร์เน็ตต้องปฏิบัติต่อโดเมนระดับบนสุด (TLD) ทั้งหมดในลักษณะที่สอดคล้องกัน ซึ่งรวมถึง gTLD ใหม่และ TLD ที่เป็นสากล โดยต้องยอมรับ ตรวจสอบ จัดเก็บ ประมวลผล และแสดงชื่อโดเมนทั้งหมด ได้อย่างถูกต้อง&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:13--&amp;gt;&lt;br /&gt;
ขณะนี้เป็นเวลาที่จะทำให้ระบบของคุณพร้อมสำหรับการยอมรับสากล และสร้างอินเทอร์เน็ตแห่งอนาคตสำหรับทุกคนอย่างแท้จริง&lt;br /&gt;
&lt;br /&gt;
= UA สำหรับผู้ดูแลระบบ = &amp;lt;!--T:17--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== เอกสารทางเทคนิค === &amp;lt;!--T:18--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:19--&amp;gt;&lt;br /&gt;
อ้างอิงจาก [https://uasg.tech/information/developers/ Information for Developers] ในเว็บไซต์ของ [[Universal Acceptance Steering Group]] (UASG)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:20--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation [https://uasg.tech/wp-content/uploads/documents/UASG004-en-digital.pdf UASG 004] Use cases สำหรับนักพัฒนาในการประเมินความพร้อมของระบบในการยอมรับสากล&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:21--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation - Data [https://uasg.tech/wp-content/uploads/2020/07/UASG004-en-digital.txt UASG 004A] ข้อมูลสำหรับสำหรับนักพัฒนาสำหรับการประเมินความพร้อมในการยอมรับสากลที่อธิบายใน UASG 004 (ชื่อโดเมนและอีเมลจำนวน 82 ชื่อ)&lt;br /&gt;
&lt;br /&gt;
=== คู่มือพัฒนา EAI Mail Server === &amp;lt;!--T:22--&amp;gt;&lt;br /&gt;
มูลนิธิ THNIC ได้ศึกษาและดำเนินการด้าน UA มาตั้งแต่ปี 2560 และได้รวบรวมความรู้ในการพัฒนาอีเมลเซิร์ฟเวอร์ จัดทำเป็นคู่มือดังต่อไปนี้&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:23--&amp;gt;&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24|คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24]] : พฤษจิกายน 2567 (อัพเดตล่าสุด 11 พฤษจิกายน  2567)&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน Ubuntu 22|คู่มือการพัฒนา EAI Mail Server บน Ubuntu 22]] : ตุลาคม 2565 (อัพเดตล่าสุด 22 เมษายน 2567)&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน Ubuntu 20|คู่มือการพัฒนา EAI Mail Server บน Ubuntu 20]] : มกราคม 2565&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน CentOS 8|คู่มือการพัฒนา EAI Mail Server บน CentOS 8]] : พฤษภาคม 2564&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนา EAI Mail Server บน CentOS 7|คู่มือการพัฒนา EAI Mail Server บน CentOS 7]] : ธันวาคม 2561 (THNG2018) &lt;br /&gt;
* [[Special:MyLanguage/การศึกษาเรื่อง EAI|การศึกษาเรื่อง EAI]] :  พฤศจิกายน 2560&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:38--&amp;gt;&lt;br /&gt;
นอกจากนี้ยังได้จัดทำ vdo clip ชุด &#039;&#039;&#039;การพัฒนาอีเมลเซิร์ฟเวอร์ให้รองรับอีเมลภาษาไทย&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:39--&amp;gt;&lt;br /&gt;
[[File:Eai_series.png|link=https://www.youtube.com/playlist?list=PL9HE8-EElX9LkwVTLoa3Yw4DAYUvbO5yx|eai series]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:40--&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* [[Special:MyLanguage/พัฒนาบน CentOS 8 (Thai Version)|พัฒนาบน CentOS 8 (Thai Version)]] : December 2018 (THNG2018) &lt;br /&gt;
* [[Special:MyLanguage/EAI Study (Thai Version)|EAI Study (Thai Version)]] | [https://wiki.thnic.or.th/en/Main_Page (English Version)] :  November 2017 (AIT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:41--&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= UA สำหรับนักพัฒนาซอฟต์แวร์ = &amp;lt;!--T:24--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== เอกสารทางเทคนิค === &amp;lt;!--T:25--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:26--&amp;gt;&lt;br /&gt;
อ้างอิงจาก [https://uasg.tech/information/developers/ Information for Developers] ในเว็บไซต์ของ [[Universal Acceptance Steering Group]] (UASG)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:27--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation [https://uasg.tech/wp-content/uploads/documents/UASG004-en-digital.pdf UASG 004] Use cases สำหรับนักพัฒนาในการประเมินความพร้อมของระบบในการยอมรับสากล&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:28--&amp;gt;&lt;br /&gt;
* Use Cases for UA Readiness Evaluation - Data [https://uasg.tech/wp-content/uploads/2020/07/UASG004-en-digital.txt UASG 004A] ข้อมูลสำหรับสำหรับนักพัฒนาสำหรับการประเมินความพร้อมในการยอมรับสากลที่อธิบายใน UASG 004 (ชื่อโดเมนและอีเมลจำนวน 82 ชื่อ)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:29--&amp;gt;&lt;br /&gt;
* Universal Acceptance Compliance of Programming Language Libraries and Frameworks – 2019 [https://uasg.tech/wp-content/uploads/documents/UASG018-en-digital.pdf UASG 018] รีวิวภาษาในการเขียนโปรแกรมและ framework ต่างๆว่ารองรับแนวปฏิบัติที่ดีของ UA อย่างไร &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:30--&amp;gt;&lt;br /&gt;
* Universal Acceptance Compliance of Programming Language Libraries and Frameworks – 2020 [https://uasg.tech/wp-content/uploads/documents/UASG018A-en-digital.pdf UASG 018A] เอกสารอธิบายผลการทดสอบการรองรับ UA ของภาษา C, C#, Go, Java, Javascript, Python3, Rust and frameworks&lt;br /&gt;
&lt;br /&gt;
=== คู่มือพัฒนาซอฟต์แวร์ให้รองรับ UA === &amp;lt;!--T:31--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
มูลนิธิ THNIC ได้ศึกษาและดำเนินการด้าน UA มาตั้งแต่ปี 2560 และได้รวบรวมความรู้ในการพัฒนาซอฟต์แวร์ระบบ จัดทำเป็นคู่มือดังต่อไปนี้&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์ให้รองรับ UA ด้วยภาษา PHP|คู่มือการพัฒนาซอฟต์แวร์บนเว็บบราวซ์เซอร์ให้รองรับ UA ด้วยภาษา PHP]]&lt;br /&gt;
* [[Special:MyLanguage/คู่มือการพัฒนาซอฟต์แวร์ให้รองรับ UA ด้วยภาษา Java|คู่มือการพัฒนาซอฟต์แวร์ให้รองรับ UA ด้วยภาษา Java]] &lt;br /&gt;
&lt;br /&gt;
=== การทดสอบ UA Readiness === &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
การทดสอบ [https://wiki.thnic.or.th/th/Universal_Acceptance_Implementation#Universal_Acceptance Universal Acceptance] Readiness เป็นการทดสอบว่าโปรแกรมและระบบว่าสามารถจัดการกับชื่อโดเมนและชื่ออีเมลในภาษาต่างๆ โดยเฉพาะสามารถ รับ ตรวจสอบ จัดเก็บ ประมวลผล และแสดงผล ได้อย่างถูกต้อง&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
* Use Case สำหรับการทดสอบ UA Readiness [https://uasg.tech/wp-content/uploads/documents/UASG004-en-digital.pdf UASG004]&lt;br /&gt;
* Data สำหรับการทดสอบ UA Readiness [https://uasg.tech/wp-content/uploads/2020/07/UASG004-en-digital.txt UASG004A]&lt;br /&gt;
* [[Special:MyLanguage/Use Case และ Data สำหรับการทดสอบ .ไทย UA Readiness |Use Case และ Data สำหรับการทดสอบ .ไทย UA Readiness ]]&lt;br /&gt;
&lt;br /&gt;
= การอบรมเชิงปฏิบัติการด้าน UA และ EAI = &amp;lt;!--T:33--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:34--&amp;gt;&lt;br /&gt;
[https://academy.thnic.or.th/ ศูนย์การเรียนรู้มูลนิธิศูนย์สารสนเทศเครือข่ายไทย (THNIC Academy)] จัดทำโครงการสร้างความพร้อมด้าน Universal Acceptance (UA) และ Email Address Internationalization (EAI) ในประเทศไทย เพื่อเพิ่มความตระหนักถึงความสำคัญของ UA ให้แก่ผู้ที่มีส่วนเกี่ยวข้องไม่ว่าจะเป็นภาคประชาชน หน่วยงานรัฐบาล ภาคธุรกิจ และผู้เกี่ยวข้องกับเทคโนโลยีอินเทอร์เน็ต โดยเฉพาะนักพัฒนาซอฟต์แวร์, นักพัฒนาเว็บไซต์ และผู้ดูแลระบบ รวมทั้งส่งเสริมให้มีการปรับปรุงระบบเพื่อให้ชื่ออีเมลภาษาไทยจะถูกรับและใช้งานได้อย่างถูกต้อง ดูรายละเอียดได้ที่ [https://academy.thnic.or.th/webinars-on-eai/ Webinar และ Training ด้านการยอมรับภาษาไทย]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= APAC EAI Implementation Group = &amp;lt;!--T:35--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:36--&amp;gt;&lt;br /&gt;
สำหรับผู้สนใจติดตามข้อมูลเกี่ยวกับการพัฒนา และแลกเปลี่ยนความรู้ในการพัฒนาระบบอีเมลภาษาไทย สามารถเข้าร่วมกลุ่ม หรือ ติดตามได้ผ่าน mailling list &lt;br /&gt;
* [[Special:MyLanguage/เกี่ยวกับ apac-eai-ig@icann.org|เกี่ยวกับ apac-eai-ig@icann.org]] &lt;br /&gt;
* [https://mm.icann.org/mailman/listinfo/apac-eai-ig สมัครรับข่าวสารจาก apac-eai-ig@icann.org] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:37--&amp;gt;&lt;br /&gt;
[[Category: EAI]]&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2171</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2171"/>
		<updated>2024-11-13T06:03:10Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;แก้ไข permission ไฟล์ &amp;lt;/span&amp;gt;  ===&lt;br /&gt;
 &#039;&#039;&#039; touch /var/log/dovecot-deliver.log&lt;br /&gt;
 &#039;&#039;&#039; chown vmail:vmail /var/log/dovecot-deliver.log&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2170</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2170"/>
		<updated>2024-11-12T09:15:07Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://workshop.kon.in.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2169</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2169"/>
		<updated>2024-11-12T09:14:39Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2168</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2168"/>
		<updated>2024-11-12T05:13:12Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Oops... something went wrong!&lt;br /&gt;
 An internal error has occurred. Your request cannot be processed at this time.&lt;br /&gt;
 For administrators: Please check the application and/or server error logs for more information.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2167</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2167"/>
		<updated>2024-11-12T05:12:20Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2166</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2166"/>
		<updated>2024-11-12T05:11:54Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mail&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2165</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2165"/>
		<updated>2024-11-12T05:11:04Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite 000-default.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;a2dissite default-ssl.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2164</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2164"/>
		<updated>2024-11-12T04:37:42Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://workshop.kon.in.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2163</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2163"/>
		<updated>2024-11-12T04:37:21Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service apache2 reload&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2162</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2162"/>
		<updated>2024-11-12T04:35:11Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.9-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.9 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2161</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2161"/>
		<updated>2024-11-12T04:33:43Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MariaDB Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2160</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2160"/>
		<updated>2024-11-12T04:33:18Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2159</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2159"/>
		<updated>2024-11-12T04:31:32Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.3/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2158</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2158"/>
		<updated>2024-11-12T04:30:42Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;service apache2 start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;service apache2 status&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.1/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2157</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2157"/>
		<updated>2024-11-12T04:24:38Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB  ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;systemctl start apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;systemctl status apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.1/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2156</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2156"/>
		<updated>2024-11-12T04:22:05Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;systemctl start apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;systemctl status apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.1/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2155</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2155"/>
		<updated>2024-11-12T04:21:48Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;systemctl start apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;systemctl status apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.1/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2154</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2154"/>
		<updated>2024-11-12T04:21:26Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*สร้าง Database &amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;systemctl start apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;systemctl status apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.1/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2153</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2153"/>
		<updated>2024-11-12T04:20:27Z</updated>

		<summary type="html">&lt;p&gt;Titipong: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MariaDB&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
*สร้าง Database &lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;systemctl start apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;systemctl status apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.1/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2152</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2152"/>
		<updated>2024-11-12T04:20:10Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MySQL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MySQL&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
*สร้าง Database &lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MariaDB&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;systemctl start apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;systemctl status apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.1/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
	<entry>
		<id>https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2151</id>
		<title>คู่มือการพัฒนา EAI Mail Server บน Ubuntu 24</title>
		<link rel="alternate" type="text/html" href="https://wiki.thnic.or.th/index.php?title=%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%9E%E0%B8%B1%E0%B8%92%E0%B8%99%E0%B8%B2_EAI_Mail_Server_%E0%B8%9A%E0%B8%99_Ubuntu_24&amp;diff=2151"/>
		<updated>2024-11-12T04:19:58Z</updated>

		<summary type="html">&lt;p&gt;Titipong: /* สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MySQL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;languages/&amp;gt;&lt;br /&gt;
&amp;lt;translate&amp;gt;&lt;br /&gt;
= EAI Email Server = &amp;lt;!--T:1--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:2--&amp;gt;&lt;br /&gt;
คู่มือนี้ได้จัดทำขึ้นมาเพื่อทดสอบและเป็นแนวทางการติดตั้ง Email Server ให้สามารถรับส่ง email address ภาษาไทย หรือ Email Address Internationalization (EAI) โดยใช้ Opensource Software เพื่อหาวิธีการที่สามารถใช้งานได้ และสามารถนำไปพัฒนาต่อยอดได้ &lt;br /&gt;
&lt;br /&gt;
== Software ที่นำมาทดสอบ == &amp;lt;!--T:3--&amp;gt;&lt;br /&gt;
# Ubuntu 24.04.1 LTS&lt;br /&gt;
# Docker 27.3.1&lt;br /&gt;
# Postfix 3.8.6&lt;br /&gt;
# Dovecot 2.3.21&lt;br /&gt;
# Mariadb 10.11.8&lt;br /&gt;
# Roundcube 1.6.9 [[https://roundcube.net/download/ ดาวน์โหลด]] [[https://github.com/roundcube/roundcubemail/releases/download/1.6.9/roundcubemail-1.6.9-complete.tar.gz tar]]&lt;br /&gt;
&lt;br /&gt;
== เอกสารที่เกี่ยวข้อง ==&lt;br /&gt;
# Workshop Slide [[https://kon.in.th/download/EAI_Training_2024.pdf ดาวน์โหลด]]&lt;br /&gt;
# แบบสอบถาม [[https://docs.google.com/forms/d/e/1FAIpQLSf1IjIT6LqHSEnXUQDcjakVnQ3XRqbD5adluaCDRjNwZhOnGQ/viewform แบบสอบถาม]] &lt;br /&gt;
[[ไฟล์:แบบสอบถาม.jpeg|border|400px]]&lt;br /&gt;
&lt;br /&gt;
== EAI Workshop Authentication  == &amp;lt;!--T:5--&amp;gt;&lt;br /&gt;
* [[https://workshop.kon.in.th/ EAI Workshop]]&lt;br /&gt;
 user: eai&lt;br /&gt;
 pass: eaiws@2024&lt;br /&gt;
* โดเมนที่ใช้เป็นตัวอย่างใน workshop&lt;br /&gt;
 English : mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 ภาษาไทย : จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 (Punycode) : xn--&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&lt;br /&gt;
&#039;&#039; เว็บไซต์สำหรับแปลงโดเมนไทยเป็น punycode https://www.punycoder.com/&lt;br /&gt;
&lt;br /&gt;
* Ubuntu Server: &lt;br /&gt;
 User: user&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;&lt;br /&gt;
 Pass: userpass&lt;br /&gt;
* Passphase for SSL Key&lt;br /&gt;
 Key: mailthai.key, mailthai.crt&lt;br /&gt;
* MySQL&lt;br /&gt;
 DB: eaimail&lt;br /&gt;
 User: dbuser&lt;br /&gt;
 Pass: dbuserpass&lt;br /&gt;
 &lt;br /&gt;
 DB: roundcubemail&lt;br /&gt;
 User: rcmail&lt;br /&gt;
 Pass: rcmailpass&lt;br /&gt;
* Roundcube&lt;br /&gt;
 User: thai@mailthai&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
 User: ไทย@จดหมาย&amp;lt;span style=&amp;quot;color: green;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&lt;br /&gt;
 Pass: thaipass&lt;br /&gt;
&lt;br /&gt;
= การติดตั้ง EAI Email Server = &amp;lt;!--T:7--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า hostname == &amp;lt;!--T:8--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:9--&amp;gt;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เข้าใช้งาน container  &amp;lt;/span&amp;gt;===&lt;br /&gt;
 &#039;&#039;&#039;docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&#039;&#039;ตัวอย่าง docker exec -it host&amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt; bash&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:10--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;กำหนดชื่อ hostname และตรวจสอบด้วยคำสั่ง &amp;lt;/span&amp;gt; ===&lt;br /&gt;
* กำหนดชื่อ hostname &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hostname&lt;br /&gt;
&lt;br /&gt;
 mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
* ตรวจสอบ hostname &lt;br /&gt;
 &#039;&#039;&#039;hostname&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 mail.mailthai99.in.th&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:11--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&amp;quot;color:green;&amp;quot;&amp;gt;เพิ่มค่า hostname ชื่อเดียวกับชื่อที่กำหนดข้างต้นในไฟล์ hosts &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/hosts&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:12--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์ hosts&#039;&#039;&lt;br /&gt;
 10.0.0.1&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;   	localhost mail.mailthai&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;99&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
&lt;br /&gt;
&#039;&#039; กด crtl+X และกด y เพื่อ save และออกจาก nano&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่าเวลาของ Mail Server และตรวจสอบ ===&lt;br /&gt;
* ตั้งค่าเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;tzselect&lt;br /&gt;
&#039;&#039; ตัวอย่าง เลือก 4) Asia / 51) Thailand / 1) Yes&lt;br /&gt;
* ตรวจสอบเวลาของ Mail Server&lt;br /&gt;
 &#039;&#039;&#039;date&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;อ. 12 พ.ย. 2567 02:30:29 +07&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== สร้าง SSL Cert == &amp;lt;!--T:32--&amp;gt;&lt;br /&gt;
* เป็นขั้นตอนการสร้าง SSL cert/key เตรียมไว้ใช้งานกับ postfix และ dovecot &lt;br /&gt;
* ในเครื่อง workshop ได้เตรียม cert mailthai.crt, mailthai.key ไว้แล้ว&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;1. สร้าง private key&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/ssl/private&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;openssl req -new -x509 -days 365 -nodes -newkey rsa:2048 -keyout mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key -out mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt -subj &amp;quot;/C=TH/ST=Bangkok/L=Dusit/O=EAI/OU=IT/CN=mail.mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;2. ตรวจสอบ key ที่สร้างขึ้น&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;ls&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง &#039;&#039;&lt;br /&gt;
 mailthai99.crt  mailthai99.key&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง MariaDB, Postfix, Dovecot == &amp;lt;!--T:42--&amp;gt;&lt;br /&gt;
1. ติดตั้ง MariaDB, Postfix , Dovecot และ packet ที่จำเป็นสำหรับ email sever ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;apt -y install postfix postfix-mysql dovecot-core dovecot-mysql dovecot-imapd dovecot-pop3d dovecot-lmtpd mariadb-server&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:43--&amp;gt;&lt;br /&gt;
3. สั่ง start service ของ MariaDB, Postfix, Dovecot ด้วยคำสั่ง&lt;br /&gt;
 &#039;&#039;&#039;service mariadb start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix start&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot start&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:44--&amp;gt;&lt;br /&gt;
4. ดูสถานะการทำงานของ MariaDB, Postfix, Dovecot&lt;br /&gt;
 &#039;&#039;&#039;service mariadb status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service postfix status&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot status&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 * Starting MariaDB database server mariadbd                                                                    [ OK ] &lt;br /&gt;
&lt;br /&gt;
 postfix/postfix-script: starting the Postfix mail system&lt;br /&gt;
   ...done.&lt;br /&gt;
&lt;br /&gt;
 * Starting IMAP/POP3 mail server dovecot                                                                       [ OK ]&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า MariaDB == &amp;lt;!--T:45--&amp;gt;&lt;br /&gt;
=== ตั้งค่า UTF8 ให้กับ MariaDB เพื่อให้รองรับภาษาไทย โดยเพิ่มคำสั่งด้านล่างลงในไฟล์ mysqld.cnf ใต้ [mysqld] === &lt;br /&gt;
 &#039;&#039;&#039;nano /etc/mysql/mariadb.conf.d/50-server.cnf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039; ตัวอย่าง ไฟล์ 50-server.cnf&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:46--&amp;gt;&lt;br /&gt;
 # Here is entries for some specific programs&lt;br /&gt;
 # The following values assume you have at least 32M ram&lt;br /&gt;
 &lt;br /&gt;
 [mysqld]&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;character-set-server = utf8mb4&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;collation-server = utf8mb4_unicode_ci&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;skip-character-set-client-handshake&amp;lt;/span&amp;gt;&lt;br /&gt;
 #  &lt;br /&gt;
 # * Basic Settings&lt;br /&gt;
 #&lt;br /&gt;
&lt;br /&gt;
=== สั่ง restart MariaDB === &lt;br /&gt;
 &#039;&#039;&#039;service mariadb restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:49--&amp;gt;&lt;br /&gt;
===  Login เข้าใช้งาน MariaDB โดย user root  ===&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p           &amp;lt;span style=&#039;color:green&#039;&amp;gt;# enter&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== สร้าง Database เพื่อใช้เก็บข้อมูลของการใช้งาน Email Server ===&lt;br /&gt;
*สร้าง Database &lt;br /&gt;
 &#039;&#039;&#039;CREATE DATABASE eaimail CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Query OK, 1 row affected (0.02 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&#039;color:green&#039;&amp;gt;*เลือกใช้งาน Database eaimail&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;USE eaimail;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 Database changed&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user พร้อมกำหนดสิทธิ์การใช้งานให้กับ eaimail database ที่สร้างขึ้นมา ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE USER dbuser@localhost IDENTIFIED BY &#039;dbuserpass&#039;;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;FLUSH PRIVILEGES;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:52--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ user ที่สร้างขึ้นใหม่โดย ===&lt;br /&gt;
 &#039;&#039;&#039;SHOW GRANTS FOR dbuser@localhost;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | Grants for dbuser@localhost                                                 			|&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 | GRANT USAGE ON *.* TO `dbuser`@`localhost`                                  		|&lt;br /&gt;
 | GRANT SELECT, INSERT, UPDATE, DELETE ON `eaimail`.* TO `dbuser`@`localhost` |&lt;br /&gt;
 +----------------------------------------------------------------------------------------------------------------+&lt;br /&gt;
 2 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:53--&amp;gt;&lt;br /&gt;
=== สร้างตารางใช้เก็บค่า domains, forwardings สำหรับ forward อีเมลภาษาไทยไปภาษาอังกฤษ, users เพื่อใช้สร้าง mailbox ===&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE domains (domain varchar(256) NOT NULL, PRIMARY KEY (domain));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE forwardings (source varchar(256) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source));&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;CREATE TABLE users (email varchar(256) NOT NULL, password varchar(256) NOT NULL, PRIMARY KEY (email));&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; เพิ่มข้อมูล Domain และ Email Account ทั้งภาษาอังกฤษ และภาษาไทย เพื่อเริ่มใช้งาน&amp;lt;/span&amp;gt; === &lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO domains (domain) VALUES (&#039;xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO users (email, password) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;, &#039;$6$7GQtdsDwSjzB7EAm$0.W6ZBcGEylrQMHKv1j7PZd/6EPoXAYClNhxxs3V2mG/NrHKDsycOTWwETniwI9O/OUeQkqBT5KPfNkDUb8hk/&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง เช่น mailthai99.in.th, จดหมาย99.ไทย, thai@mailthai99.in.th, ไทย@จดหมาย99.ไทย&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;หมายเหตุ สร้างรหัสผ่านด้วยคำสั่ง doveadm pw -s SHA512-CRYPT &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt; กำหนด Email ที่เข้ามายัง Email Account ภาษาไทย ให้ forward เข้า Email-Account ภาษาอังกฤษ เนื่องจากระบบไม่สามารถสร้าง mailbox เป็น ภาษาไทยได้&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@จดหมาย&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;INSERT INTO forwardings (source,destination) VALUES (&#039;ไทย@xn--&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;-6qi0c9cg5dxc.xn--o3cw4h&#039;,&#039;thai@mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&#039;);&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;quit;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า postfix == &amp;lt;!--T:56--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง Postfix และ MariaDB &amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/postfix/mysql&#039;&#039;&#039;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับเรียกค่า domain จาก Database&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_domains.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:57--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT domain FROM domains WHERE domain=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:58--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ forward email&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_forwardings.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:59--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT destination FROM forwardings WHERE source=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:60--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ สร้าง mailbox และใช้ login&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_mailboxes.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:61--&amp;gt;&lt;br /&gt;
 user = dbuser &lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT CONCAT(SUBSTRING_INDEX(email,&#039;@&#039;,-1),&#039;/&#039;,SUBSTRING_INDEX(email,&#039;@&#039;,1),&#039;/&#039;) FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:62--&amp;gt;&lt;br /&gt;
* สร้างไฟล์ script เพื่อใช้สำหรับ ส่งต่อ email ทั้งหมด ไปยัง smtp server อื่น ซึ่งใช้ในกรณีที่ host เป็น IP Address&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/postfix/mysql/mysql-virtual_email2email.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:63--&amp;gt;&lt;br /&gt;
 user = dbuser&lt;br /&gt;
 password = dbuserpass&lt;br /&gt;
 dbname = eaimail&lt;br /&gt;
 query = SELECT email FROM users WHERE email=&#039;%s&#039;&lt;br /&gt;
 hosts = 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:64--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์ให้กับ script ที่สร้างขึ้น&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/postfix/mysql/mysql-virtual_*.cf &amp;amp;&amp;amp; chgrp postfix /etc/postfix/mysql/mysql-virtual_*.cf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root postfix   124 Jan  7 23:36 mysql-virtual_domains.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   120 Jan  7 23:39 mysql-virtual_email2email.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   133 Jan  7 23:37 mysql-virtual_forwardings.cf&lt;br /&gt;
 -rw-r-----   1 root postfix   190 Jan  7 23:38 mysql-virtual_mailboxes.cf&lt;br /&gt;
&lt;br /&gt;
=== สร้าง user vmail สำหรับอ่าน/เขียน mailbox === &amp;lt;!--T:65--&amp;gt;&lt;br /&gt;
* สร้าง group เพื่อใช้กับ mailbox &lt;br /&gt;
 &#039;&#039;&#039;groupadd -g 5000 vmail&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;useradd -g vmail -u 5000 vmail -d /home/vmail -m&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/main.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:66--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myhostname=mail.mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydomain=mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_domains=จดหมาย&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.ไทย&amp;quot; &amp;amp;&amp;amp; \ &lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_cert_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_key_file=/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;myorigin=\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_interfaces=all&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;inet_protocols=ipv4&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mydestination=mail.\$mydomain&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;mynetworks=10.0.0.0/24 127.0.0.0/8&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_type=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_path=private/auth&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_sasl_authenticated_header=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;broken_sasl_auth_clients=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_use_tls=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_auth_only=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtpd_tls_loglevel=1&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_base=/home/vmail&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_maps=mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_mailbox_domains=mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_alias_maps=mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_uid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_gid_maps=static:5000&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;virtual_transport=dovecot&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;proxy_read_maps=\$local_recipient_maps \$mydestination \$virtual_alias_maps \$virtual_alias_domains \$virtual_mailbox_maps \$virtual_mailbox_domains \$relay_recipient_maps \$relay_domains \$canonical_maps \$sender_canonical_maps \$recipient_canonical_maps \$relocated_maps \$transport_maps \$mynetworks&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;smtputf8_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf &amp;quot;maillog_file=/var/log/mail.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039; postconf -n&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:67--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 alias_database = hash:/etc/aliases&lt;br /&gt;
 alias_maps = hash:/etc/aliases&lt;br /&gt;
 append_dot_mydomain = no&lt;br /&gt;
 biff = no&lt;br /&gt;
 broken_sasl_auth_clients = yes&lt;br /&gt;
 compatibility_level = 3.6&lt;br /&gt;
 inet_interfaces = all&lt;br /&gt;
 inet_protocols = ipv4&lt;br /&gt;
 mailbox_size_limit = 0 &lt;br /&gt;
 maillog_file = /var/log/mail.log&lt;br /&gt;
 mydestination = mail.$mydomain&lt;br /&gt;
 mydomain = mailthai99.in.th &lt;br /&gt;
 myhostname = mail.mailthai99.in.th &lt;br /&gt;
 mynetworks = 10.0.0.0/24, 127.0.0.0/8&lt;br /&gt;
 myorigin = $mydomain &lt;br /&gt;
 proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps  &lt;br /&gt;
 $relocated_maps $transport_maps $mynetworks&lt;br /&gt;
 readme_directory = no&lt;br /&gt;
 recipient_delimiter = +&lt;br /&gt;
 relayhost =&lt;br /&gt;
 smtp_tls_CApath = /etc/ssl/certs&lt;br /&gt;
 smtp_tls_security_level = may&lt;br /&gt;
 smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache&lt;br /&gt;
 smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)&lt;br /&gt;
 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination&lt;br /&gt;
 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination&lt;br /&gt;
 smtpd_sasl_auth_enable = yes&lt;br /&gt;
 smtpd_sasl_authenticated_header = yes&lt;br /&gt;
 smtpd_sasl_path = private/auth&lt;br /&gt;
 smtpd_sasl_type = dovecot&lt;br /&gt;
 smtpd_tls_auth_only = yes&lt;br /&gt;
 smtpd_tls_cert_file = /etc/ssl/private/mailthai99.crt&lt;br /&gt;
 smtpd_tls_key_file = /etc/ssl/private/mailthai99.key&lt;br /&gt;
 smtpd_tls_loglevel = 1&lt;br /&gt;
 smtpd_tls_security_level = may&lt;br /&gt;
 smtpd_use_tls = yes&lt;br /&gt;
 smtputf8_enable = yes&lt;br /&gt;
 virtual_alias_domains = จดหมาย99.ไทย&lt;br /&gt;
 virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql/mysql-virtual_email2email.cf&lt;br /&gt;
 virtual_gid_maps = static:5000&lt;br /&gt;
 virtual_mailbox_base = /home/vmail&lt;br /&gt;
 virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql-virtual_domains.cf&lt;br /&gt;
 virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql-virtual_mailboxes.cf&lt;br /&gt;
 virtual_transport = dovecot&lt;br /&gt;
 virtual_uid_maps = static:5000&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;config การทำงานของ postfix ด้วยคำสั่ง postconf (คำสั่งนี้จะไปแก้ไขไฟล์ &amp;quot;/etc/postfix/master.cf&amp;quot;)&amp;lt;/span&amp;gt; === &amp;lt;!--T:68--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;postconf -M smtps/inet=&amp;quot;smtps inet n - - - - smtpd&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/syslog_name=postfix/smtps&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_tls_wrappermode=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_sasl_auth_enable=yes&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_client_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/smtpd_relay_restrictions=permit_sasl_authenticated,reject&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -P &amp;quot;smtps/inet/milter_macro_daemon_name=ORIGINATING&amp;quot; &amp;amp;&amp;amp; \&lt;br /&gt;
 &#039;&#039;&#039;postconf -M dovecot/unix=&amp;quot;dovecot   unix  -       n       n       -       -       pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f \${sender} -d \${recipient}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบการ config postfix ด้วยคำสั่ง ===&lt;br /&gt;
 &#039;&#039;&#039;postconf -M&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:69--&amp;gt;&lt;br /&gt;
* ตัวอย่างไฟล์&lt;br /&gt;
 smtps inet n - - - - smtpd&lt;br /&gt;
    -o syslog_name=postfix/smtps&lt;br /&gt;
    -o smtpd_tls_wrappermode=yes &lt;br /&gt;
    -o smtpd_sasl_auth_enable=yes &lt;br /&gt;
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o smtpd_relay_restrictions=permit_sasl_authenticated,reject &lt;br /&gt;
    -o milter_macro_daemon_name=ORIGINATING&#039;&#039;&#039;&lt;br /&gt;
 dovecot   unix  -       n       n       -       -       pipe&lt;br /&gt;
     flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart postfix&amp;lt;/span&amp;gt; === &amp;lt;!--T:70--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service postfix restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ตั้งค่า dovecot == &amp;lt;!--T:71--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์เชื่อมต่อระหว่าง dovecot และ MySQL&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/dovecot/&#039;&#039;&#039;&lt;br /&gt;
* สร้าง script เพื่อให้ dovecot ใช้งานกับ SQL ที่เราได้กำหนดก่อนหน้านี้&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:72--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่างไฟล์&#039;&#039;&lt;br /&gt;
 driver = mysql&lt;br /&gt;
 connect = host=127.0.0.1 dbname=eaimail user=dbuser password=dbuserpass&lt;br /&gt;
 default_pass_scheme = SHA512-CRYPT&lt;br /&gt;
 password_query = SELECT email as user, password FROM users WHERE email=&#039;%u&#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:73--&amp;gt;&lt;br /&gt;
* กำหนดสิทธิ์อนุญาตให้ user ที่อยู่ใน dovecot group ใช้งาน&lt;br /&gt;
 &#039;&#039;&#039;chmod 640 /etc/dovecot/dovecot-sql.conf.ext &amp;amp;&amp;amp; chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r-----   1 root dovecot 6023 Jan  7 23:54 dovecot-sql.conf.ext&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;Backup ไฟล์ dovecot.conf เดิมไว้ก่อน&amp;lt;/span&amp;gt; ===&amp;lt;!--T:74--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 -rw-r--r--   1 root root    4401 Apr 12  2021 dovecot.conf-backup&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:75--&amp;gt;&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สร้างไฟล์ &amp;quot;/etc/dovecot/dovecot.conf” และแก้ไขไฟล์ &amp;quot;/etc/dovecot/dovecot.conf&amp;quot; ด้วยการใส่คำสั่งตามด้านล่าง&amp;lt;/span&amp;gt; ===&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/dovecot/dovecot.conf&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:76--&amp;gt;&lt;br /&gt;
 protocols = imap pop3 lmtp&lt;br /&gt;
 log_path = /var/log/dovecot.log&lt;br /&gt;
 log_timestamp = &amp;quot;%Y-%m-%d %H:%M:%S&amp;quot;&lt;br /&gt;
 mail_location = maildir:/home/vmail/%d/%n/Maildir&lt;br /&gt;
 ssl_cert = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.crt&lt;br /&gt;
 ssl_key = &amp;lt;/etc/ssl/private/mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.key&lt;br /&gt;
 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL&lt;br /&gt;
 auth_mechanisms = plain login&lt;br /&gt;
 namespace {&lt;br /&gt;
 	type = private&lt;br /&gt;
 	separator = .&lt;br /&gt;
 	prefix = INBOX.&lt;br /&gt;
 	inbox = yes&lt;br /&gt;
 }&lt;br /&gt;
 service auth {&lt;br /&gt;
 	unix_listener auth-master {&lt;br /&gt;
 		mode = 0600&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener /var/spool/postfix/private/auth {&lt;br /&gt;
 		mode = 0666&lt;br /&gt;
 		user = postfix&lt;br /&gt;
 		group = postfix&lt;br /&gt;
 	}&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 service auth-worker {&lt;br /&gt;
 	user = root&lt;br /&gt;
 }&lt;br /&gt;
 protocol lda {&lt;br /&gt;
 	log_path = /var/log/dovecot-deliver.log&lt;br /&gt;
 	auth_socket_path = /var/run/dovecot/auth-master&lt;br /&gt;
 	postmaster_address = postmaster@mailthai&amp;lt;span style=&#039;color:green;&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th&lt;br /&gt;
 }&lt;br /&gt;
 protocol pop3 {&lt;br /&gt;
 	pop3_uidl_format = %08Xu%08Xv&lt;br /&gt;
 	pop3_client_workarounds = outlook-no-nuls oe-ns-eoh&lt;br /&gt;
 }&lt;br /&gt;
 passdb {&lt;br /&gt;
 	driver = sql&lt;br /&gt;
 	args = &amp;lt;span style=&#039;color:green;&#039;&amp;gt;/etc/dovecot/dovecot-sql.conf.ext&amp;lt;/span&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
 userdb {&lt;br /&gt;
 	driver = static&lt;br /&gt;
 	args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes&lt;br /&gt;
 }&lt;br /&gt;
 service stats {&lt;br /&gt;
 	unix_listener stats-reader {&lt;br /&gt;
 		user =  vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 	unix_listener stats-writer {&lt;br /&gt;
 		user = vmail&lt;br /&gt;
 		group = vmail&lt;br /&gt;
 		mode = 0660&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;สั่ง restart dovecot&amp;lt;/span&amp;gt; ===&amp;lt;!--T:77--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;service dovecot restart&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ทดสอบการทำงานของ Email Server == &amp;lt;!--T:78--&amp;gt;&lt;br /&gt;
=== ติดตั้งโปรแกรม telnet เพื่อทดสอบอีเมลเซิร์ฟเวอร์ ===&lt;br /&gt;
 &#039;&#039;&#039;apt -y install telnet&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ imap ด้วยคำสั่ง telnet ===&lt;br /&gt;
 &#039;&#039;&#039; telnet localhost imap&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:79--&amp;gt;&lt;br /&gt;
 Trying 127.0.0.1...&lt;br /&gt;
 Connected to localhost.&lt;br /&gt;
 Escape character is &#039;^]&#039;.&lt;br /&gt;
 * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot (Ubuntu) ready.&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
=== ทดสอบ smtp ด้วยคำสั่ง telnet ===&lt;br /&gt;
&amp;lt;!--T:83--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:84--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง &#039;&#039;&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250-mail.mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 250-PIPELINING&lt;br /&gt;
 250-SIZE 30720000&lt;br /&gt;
 250-VRFY&lt;br /&gt;
 250-ETRN&lt;br /&gt;
 250-STARTTLS &lt;br /&gt;
 250-ENHANCEDSTATUSCODES&lt;br /&gt;
 250-8BITMIME&lt;br /&gt;
 250-DSN&lt;br /&gt;
 &amp;lt;span style=&#039;color:green&#039;&amp;gt;250 SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:85--&amp;gt;&lt;br /&gt;
=== ทดสอบการส่ง email ด้วย telnet ===&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthaiXX.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;thai@mailthai99.in.th&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก &lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;telnet localhost smtp&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;ehlo localhost&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MAIL FROM: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมายXX.ไทย SMTPUTF8&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;RCPT TO: &amp;lt;span style=&#039;color:green;&#039;&amp;gt;ไทย@จดหมาย99.ไทย&amp;lt;/span&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;data&lt;br /&gt;
 &#039;&#039;&#039;Subject: test mailthaiXX.in.th to mailthai99.in.th&lt;br /&gt;
 &#039;&#039;&#039;test &lt;br /&gt;
 &#039;&#039;&#039; . 			&amp;lt;span style=&#039;color:green;&#039;&amp;gt;ใช้เครื่องหมาย “.” เพื่อจบข้อความและส่งข้อความ&amp;lt;/span&amp;gt;&lt;br /&gt;
&#039;&#039; หมายเหตุ กด Ctrl+] และตามด้วย q เพื่อออก&lt;br /&gt;
&lt;br /&gt;
=== ตรวจสอบ log ของการส่ง Email : /var/log/mail.log ซึ้งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=&amp;lt;root&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=&amp;lt;20171113081907.E9AB020199E5@mail.mailthai99.in.th&amp;gt;&lt;br /&gt;
 Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=&amp;lt;root@mailthai99.in.th&amp;gt;, size=434, nrcpt=1 (queue active)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=&amp;lt;thai@mailthai99.in.th&amp;gt;, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)&lt;br /&gt;
 Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:87--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ log ของ dovecot : /home/vmail/dovecot-deliver.log ซึ่งจะได้ผลตามด้านล่าง ===&lt;br /&gt;
 &#039;&#039;&#039;2017-11-13 15:19:08 lda(thai@mailthai99.in.th): Info: msgid=&amp;lt;20171113081907.E9AB020199E5@mail.eai.in.th&amp;gt;: saved mail to INBOX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:88--&amp;gt;&lt;br /&gt;
=== ตรวจสอบ mailbox เมื่อมีการรับส่ง-ส่ง Email จะสร้างขึ้นโดย dovecot ซึ่งจะได้ผลตามตัวอย่าง ===&lt;br /&gt;
 &#039;&#039;&#039;cd /home/vmail/mailthai&amp;lt;span style=&#039;color:green&#039;&amp;gt;XX&amp;lt;/span&amp;gt;.in.th/Maildir&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;find&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่างเช่น mailthai99.in.th&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:89--&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;.&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot-uidlist&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./cur&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./new/1285609582.P6115Q0M368794.li172-137&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./dovecot.index.log&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;./tmp&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ติดตั้ง roundcube webmail == &amp;lt;!--T:92--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ติดตั้ง apache php === &amp;lt;!--T:93--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:95--&amp;gt;&lt;br /&gt;
* ใช้คำสั่ง apt ติดตั้ง php, php library และ apache web server&lt;br /&gt;
 &#039;&#039;&#039;apt -y install apache2 php php-imap php-imagick php-json php-xml php-mbstring php-pear php-intl php-ldap php-gd php-zip php-mysql php-curl php-bz2 php-gmp phpmyadmin&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:96--&amp;gt;&lt;br /&gt;
* config phpmyadmin &lt;br /&gt;
 &#039;&#039;&#039;Configure database for phpmyadmin with dbconfig-common? [yes/no] yes&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;MySQL application password for phpmyadmin:  # enter&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;Web server to reconfigure automatically: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ใช้คำสั่ง start service apache และ php &lt;br /&gt;
 &#039;&#039;&#039;systemctl start apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:97--&amp;gt;&lt;br /&gt;
* ตรวจสอบสถานะการทำงานของ apache &lt;br /&gt;
 &#039;&#039;&#039;systemctl status apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า php (เราจะตั้งค่าเฉพาะส่วนที่จำเป็นต่อการใช้งาน roundcube) === &amp;lt;!--T:98--&amp;gt;&lt;br /&gt;
* ตั้งค่า timezone&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/php/8.1/apache2/php.ini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:99--&amp;gt;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
[Date]&lt;br /&gt;
 ; Defines the default timezone used by the date functions&lt;br /&gt;
 ; http://php.net/date.timezone &lt;br /&gt;
 date.timezone = Asia/Bangkok&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า MySQL Database === &amp;lt;!--T:100--&amp;gt;&lt;br /&gt;
* สร้าง database roundcubemail โดยกำหนด username=rcmail, password=rcmailpass&lt;br /&gt;
 &#039;&#039;&#039;mysql -u root -p&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:101--&amp;gt; &lt;br /&gt;
 CREATE DATABASE roundcubemail CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;&lt;br /&gt;
 CREATE USER rcmail@localhost IDENTIFIED BY &#039;rcmailpass&#039; ;&lt;br /&gt;
 GRANT ALL PRIVILEGES ON roundcubemail.* TO rcmail@localhost;&lt;br /&gt;
 FLUSH PRIVILEGES;&lt;br /&gt;
 quit;&lt;br /&gt;
&lt;br /&gt;
=== ตั้งค่า roundcube === &amp;lt;!--T:102--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /var/www/html/&lt;br /&gt;
 &#039;&#039;&#039;wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz&lt;br /&gt;
 &#039;&#039;&#039;tar zvfx /var/www/html/roundcubemail-1.6.5-complete.tar.gz &lt;br /&gt;
 &#039;&#039;&#039;mv /var/www/html/roundcubemail-1.6.5 /var/www/html/roundcubemail&lt;br /&gt;
 &#039;&#039;&#039;ll /var/www/html/roundcubemail/config/&lt;br /&gt;
 &#039;&#039;&#039;chown -R www-data:www-data /var/www/html/roundcubemail&lt;br /&gt;
&lt;br /&gt;
=== สร้าง virtualhost === &amp;lt;!--T:103--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;cd /etc/apache2/sites-available/&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;nano /etc/apache2/sites-available/rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!--T:104--&amp;gt;&lt;br /&gt;
 &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
 	ServerName mail.mailthai99.in.th&lt;br /&gt;
 	ServerAdmin webmaster@mailtha99.in.th&lt;br /&gt;
 	DocumentRoot /var/www/html/roundcubemail&lt;br /&gt;
 	&amp;lt;Directory /var/www/html/roundcubemail&amp;gt;&lt;br /&gt;
 		Options -Indexes +FollowSymLinks&lt;br /&gt;
 		AllowOverride All&lt;br /&gt;
 	&amp;lt;/Directory&amp;gt;&lt;br /&gt;
 	ErrorLog /var/log/apache2/mailthai99-in-th-th-error.log&lt;br /&gt;
 	CustomLog /var/log/apache2/mailthai99-in-th-th-access.log combined&lt;br /&gt;
 &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:105--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;a2ensite rcmail.conf&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;systemctl restart apache2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ทดสอบเข้าเว็บโซต์&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 DATABASE ERROR: CONNECTION FAILED!&lt;br /&gt;
 Unable to connect to the database!&lt;br /&gt;
 Please contact your server-administrator.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;เข้าหน้า config roundcube&amp;lt;/span&amp;gt; === &amp;lt;!--T:106--&amp;gt;&lt;br /&gt;
*เข้าหน้าเว็บ config&lt;br /&gt;
 &#039;&#039;&#039;https://eai-lab.bknix.co.th/mailXX/installer/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่าเชื่อมต่อ database&amp;lt;/span&amp;gt;  === &amp;lt;!--T:107--&amp;gt;&lt;br /&gt;
 host = localhost&lt;br /&gt;
 dbname = roundcubemail&lt;br /&gt;
 user = rcmail&lt;br /&gt;
 password = rcmailpass&lt;br /&gt;
 db_prefix = rc_&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;span style=&#039;color:green&#039;&amp;gt;ตั้งค่า IMAP/SMTP&amp;lt;/span&amp;gt;  === &amp;lt;!--T:109--&amp;gt;&lt;br /&gt;
* ตั้งค่า IMAP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:993&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--T:110--&amp;gt;&lt;br /&gt;
* ตั้งค่า SMTP&lt;br /&gt;
 &#039;&#039;&#039;ssl://mail.mailthaiXX.in.th:465&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;หมายเหตุ user: thai@mailthaiXX.in.th และ ไทย@จดหมายXX.ไทย, pass: thaipass&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*แก้ไขไฟล์ config.inc.php&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/config.inc.php&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;request_path&#039;] = &#039;https://eai-lab.bknix.co.th/mailXX/&#039;;&lt;br /&gt;
&lt;br /&gt;
*การใช้ ssl แบบ self-sign อาจจะทำให้ roundcube ไม่สามารถเชื่อมต่อ mail server ได้ แก้ปัญหาโดยการ config เพิ่มเติม ดังนี้&lt;br /&gt;
 &#039;&#039;&#039;nano /var/www/html/roundcubemail/config/defaults.inc.php&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ตัวอย่าง&#039;&#039;&lt;br /&gt;
 $config[&#039;enable_installer&#039;] = true;&lt;br /&gt;
 $config[&#039;imap_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
  &lt;br /&gt;
 $config[&#039;smtp_conn_options&#039;] = array(&lt;br /&gt;
   &#039;ssl&#039;         =&amp;gt; array(&lt;br /&gt;
      &#039;verify_peer&#039;      =&amp;gt; false,&lt;br /&gt;
      &#039;verify_peer_name&#039; =&amp;gt; false,&lt;br /&gt;
   ),&lt;br /&gt;
 );&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/translate&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: EAI]]&lt;/div&gt;</summary>
		<author><name>Titipong</name></author>
	</entry>
</feed>