Tự Cài đặt Mail Server Dùng Cho Pentest Và Các Mục đích Khác - Viblo
Có thể bạn quan tâm
Intro
Nhiều lúc bạn muốn có thật nhiều tài khoản mail để:
- Đăng ký diễn đàn hoặc newleters và những thứ linh tinh khác, nói chung là email có thể xác thực được, khi mà các trang email disposable như yopmail.com bị block càng nhiều
- Như mình là pentester cần có nhiều email để đăng ký nhiều account để test các lỗi như IDOR, BAC, PE...
- Khi không thể sử dụng mail alias với +
- ...cho vui

Trong bài này ta sẽ setup thử mail server với các yêu cầu trên.
Những thứ bạn cần có:
- Một VPS có địa chỉ IP tĩnh và public trên internet. Hiện mình đang dùng dịch vụ của Digital Ocean với giá 5$/tháng, bạn có thể dùng bất cứ dịch vụ nào khác cũng được.
- Một domain mà bạn muốn thiết lập nhận mail. Có rất nhiều dịch vụ cho phép đăng ký domain free, mình dùng dot.tk và đăng ký domain: minhtuanact.tk
(thực ra domain và VPS đều là của đứa trong team, mình setup hộ để lấy ảnh viết bài viblo write-up
)
Let's go!
Cài đặt cấu hình DNS
Để có thể được mail thì ta cần thiết lập một số DNS record:
- Một record A với domain/subdomain của mail server, chỉ đến địa chỉ IP của VPS. VD: trang web của bạn ở địa chỉ minhtuanact.tk và bạn muốn nhận mail ở một subdomain khác, ở đây mình sử dụng mail.minhtuanact.tk thì điền Name là: MAIL.
- Một record MX để chỉ rõ subdomain nào sẽ đảm nhận việc nhận và gửi mail.
- Một record TXT với tên là _DMARC dùng để thông báo về các policy trong việc gửi mai: khi bị spam mail thì như thế nào, gửi thông báo trong các trường hợp lỗi như thế nào, vân vân và vân vân... Mình cũng ko quan tâm lắm đến cái này nên dùng tạm cấu hình mặc định như sau. Điền email của bạn vào phần rua và ruf nhé:
Vớ Freenom thì bạn vào link: https://my.freenom.com/clientarea.php?managedns=YYYY&domainid=XXXX và cấu hình tương tự như dưới đây. Có thể đặt TTL nhỏ để DNS nhanh chóng được cập nhật ( tối thiểu là 300).

Sau khi đã cấu hình xong, để có thể kiểm tra các record đã ok chưa, ta có thể dùng công cụ: https://mxtoolbox.com/, điền domain chính vào và check. Khi record chưa được sẽ như thế này:

Còn ngon rồi thì sẽ như thế này:

Cài đặt mail server
Postfix
Để nhận mail, chúng ta sử dụng Postfix, một trong những mail server quá phổ biến và quen thuộc. Cài đặt thì cũng không có gì phức tạp cả.
sudo apt update sudo apt install postfixKhi cài đặt sẽ hiện lên màn hình cấu hình như dưới đây, chỉ cần đọc và chọn theo hướng dẫn là ok:

- General type of mail configuration?: Internet Site
- System mail name: minhtuanact.tk
- Root and postmaster mail recipient: sẽ là user chính trên server của bạn, trong trường hợp của mình là: minhtuan
Còn cụ thể chúng ta sẽ cấu hình thêm ở phía sau. Còn nếu lỡ làm sai ở đâu đó thì có thể dùng câu lệnh sau để cấu hình lại:
sudo dpkg-reconfigure postfixDovecot
Chúng ta cần cài đặt thêm Dovecot: là phần mềm mã nguồn mở email server dùng cho hai giao thức IMAP và POP3 dùng để quản lý mail từ mail server. Dovecot sẽ được dùng để chuyển các mail đến hộp thư của từng user trên server. Cài đặt thì cũng không có gì quá khó cả:
sudo apt update sudo apt install dovecot-core dovecot-imapdCấu hình postfix
Đối với postfix, cấu hình sẽ nằm ở file /etc/postfix/main.cf. Mở file này ra và chúng ta thêm cấu hình như dưới đây:
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination myhostname = ubuntu-512mb-sgp1-01 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases #myorigin = /etc/mailname #mydestination = $myhostname, ubuntu-512mb-sgp1-01, localhost.localdomain, localhost myorigin = localhost mydestination = localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all home_mailbox = Maildir/ virtual_alias_maps = hash:/etc/postfix/virtual smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous smtpd_sender_restrictions = permit_sasl_authenticated virtual_alias_domains = hash:/etc/postfix/virtual_domains- alias_maps = hash:/etc/aliases và alias_database = hash:/etc/aliases: dùng để chuyển hướng mail từ user này sang user khác. Ví dụ, chúng ta muốn những mail gửi đến [email protected] sẽ được chuyển sang cho user root chẳng hạn (vì server vốn không tồn tại user postmaster).
- Chỉnh myorigin và mydestination về localhost
- home_mailbox = Maildir/: định dạng Maildir sẽ cho phép chia các email thành các file riêng biệt và di chuyển các file này giữa các folder tùy thuộc và hành động của người dùng. Một định dạng khác là mbox sẽ lưu tất cả vào một file.
- virtual_alias_domains = hash:/etc/postfix/virtual_domains dùng để setup trong trường hợp VPS này được dùng chung cho nhiều domain khác nhau, ví dụ khi muốn kiểm tra mối liên quan giữa 2 domain: example.com và xn--exmple-qta.com (tức là exámple.com sau khi punny decode) xem web app có thực hiện việc convert domain không, ta có thể dùng chung luôn mà ko cần thêm 1 VPS khác:
- virtual_alias_maps = hash:/etc/postfix/virtual: Cấu hình gồm domain và user sẽ nhận email cho domain đó. Cấu hình như thế này còn có tác dụng là tất cả các email gửi đến domain dù cho bất cứ user nào, kể cả không tồn tại đi nữa sẽ đều bị redirect về 1 hòm mail duy nhất của user được cài đặt.
Sau khi cấu hình các file này nhớ thực hiện các lệnh sau để generate DB:
sudo postmap /etc/aliases sudo postmap /etc/postfix/virtual_domains sudo postmap /etc/postfix/virtualvà load lại postfix:
sudo service postfix restartĐể có thể check mail, ta có thể cài đặt thêm công cụ mailutils:
sudo apt install mailutilsCài xong ta có thể sử dụng lệnh mail để kiểm tra thư của user hiện tại:
U 22 Twitter Thu Jan 1 07:00 2082/106270 prin Tweeted: Me after getting bug 😂 : U 23 Cron Daemon Thu Jan 1 07:00 51/2363 Cron <root@ubuntu-512mb-sgp1-01> certbot renew --renew-hook 'service nginx re U 24 Twitter Thu Jan 1 07:00 1138/46840 Another Self, download the app today U 25 Takeaway Thu Jan 1 07:00 581/42970 Jobs for you from Takeaway Talent Community U 26 Twitter Thu Jan 1 07:00 1907/94689 prin Tweeted: Support ✌️✌️✌️✌️ ? q Held 214 messages in /home/minhtuan/MaildirCấu hình dovecot
Mở file /etc/dovecot/conf.d/10-auth.conf và chỉnh cấu hình như sau:
disable_plaintext_auth = no auth_mechanisms = plain loginvà sửa auth_username_format = %n (sẽ được dùng khi dùng với rainloop ở phía sau).
Mở /etc/dovecot/conf.d/10-mail.conf và chỉnh như sau để chuyển sang sử dụng định dạng Maildir.
mail_location = maildir:~/MaildirBước cuối là chỉnh sửa /etc/dovecot/conf.d/10-master.conf, tìm đến block smtp-auth và chỉnh như sau:
# Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }Và không quên reload lại dovecot
sudo service dovecot restartCấu hình mail client
Với mail client, mình sử dụng rainloop do cấu hình rất đơn giản và nhanh gọn, chỉ cần cài đặt PHP không yêu cầu sử dụng DB gì cả. Tải về tại: https://www.rainloop.net/ và unzip vào /var/html/rainloop
wget https://www.rainloop.net/repository/webmail/rainloop-community-latest.zipRainloop yêu cầu PHP, ở đây mình dùng PHP 7.2 vài cài đặt các thư viện như sau:
sudo apt install php-fpm sudo apt install php7.2-dom sudo apt install php7.2-curlSau khi cài đặt theo hướng dẫn https://www.rainloop.net/docs/installation/, chú ý phân quyền đúng và với nginx, ta có thể cấu hình như sau:
server { listen 80; server_name inbox.minhtuanact.tk; root /var/www/rainloop/; index index.php index.html; access_log /var/log/nginx/rainloop_access.log; error_log /var/log/nginx/rainloop_error.log; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ ^/(.+\.php)$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ^~ /data { deny all; } }Chú ý cấu hình server_name với subdomain mà bạn muốn host rainloop trên đó, ở ví dụ trên là: inbox.minhtuanact.tk (nhớ setup DNS record nữa nhé).
Ok, bật rainloop lên và cấu hình nào, vào http://inbox.minhtuanact.tk/?adminvà điền tài khoản:
Default login is "admin", password is "12345".
ta cấu hình giống ảnh, và đừng quên đổi password mặc định của admin nha:
-
Chỉnh domain mặc định:
![]()
-
Thêm domain:
![]()
-
Đừng quên đổi pass nhá:
![]()
Xong xuôi ta có thể vào http://inbox.minhtuanact.tk/#/mailbox/INBOX và đăng nhập với username và password trên hệ thống để check mail. Thử gửi vài cái mail test xem có nhận được không nào 


Kết
Đừng lấy mail server đăng ký rồi đi spam nha, bị block là khổ đấy
Hiện mail server của chúng ta mới có thể nhận được email, còn để gửi mail thì sẽ cần thêm chút cấu hình nữa, có lẽ sẽ để dành bài sau. Bye!
Tham khảo
- https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-on-ubuntu-20-04
- https://www.digitalocean.com/community/tutorials/how-to-set-up-a-postfix-e-mail-server-with-dovecot
- https://www.tecmint.com/install-postfix-mail-server-with-webmail-in-debian/
Từ khóa » Cài đặt Mail Server
-
Mail Server Là Gì? Cách Cài đặt Và Quản Lý Mail Server Hiệu Quả
-
Hướng Dẫn Cài đặt Mail Server Trên Linux (Set Up Postfix MTA And ...
-
Hướng Dẫn Cài đặt Email Server Trên điện Thoại, Máy Tính Bảng ...
-
Quản Lý Mail Server Và Cách Setup Mail Server
-
Hướng Dẫn Cài Đặt Mail Server Trên CentOS 7 | An Ninh Mạng
-
Hướng Dẫn Cài đặt Email Server Lên điện Thoại Iphone / Ipad
-
Nên Sử Dụng Dịch Vụ MAIL SERVER Hay Tự Cài đặt Mail Server
-
Cài đặt Và Cấu Hình Mail Server - HKC
-
Mail Server Là Gì? Cài đặt Mail Trên Cloud Server Riêng
-
Hướng Dẫn Cài đặt Mail Server Với Postfix, Dovecot, ViMbAdmin ...
-
Cài đặt Mail Server - Học VPS
-
Cài đặt Mail Server Dễ Dàng Với Mail-in-a-Box - Học VPS
-
Hướng Dẫn Cài đặt Mail Công Ty - Việt Vang
-
Hướng Dẫn Cài đặt Mail Server Trên Linux - Thương Hiệu Web


