SimpleLogin là một aliases server nhẹ và dễ sử dụng, cho phép bạn tạo danh tính email vĩnh viễn và ẩn danh mà không cần tạo hộp thư mới. Bài viết này sẽ hướng dẫn bạn cách cài đặt server SimpleLogin trên Ubuntu và tạo email alias ẩn danh để sử dụng trực tuyến.
Chuẩn bị hệ thống
Bài viết này giả định rằng bạn đang cài đặt SimpleLogin trên VPS có RAM ít nhất 2GB và bạn có một tên miền đang hoạt động từ nhà đăng ký DNS.
Để bắt đầu, hãy nhập signing key của dự án Docker vào máy của bạn:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Tạo một file kho lưu trữ cho dự án Docker:
sudo nano /etc/apt/sources.list.d/docker.list
Viết dòng code sau vào file kho lưu trữ:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable
Refresh kho lưu trữ của máy bằng cách chạy lệnh sau:
sudo apt update && sudo apt upgrade
Cài đặt dependency cho SimpleLogin
Cài đặt cả dependency của Docker và SimpleLogin vào hệ thống của bạn:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx dnsutils postfix postfix-pgsql
Chọn Internet Site khi trình hướng dẫn cài đặt Postfix hỏi loại cấu hình mail server của bạn.
Nhấn Enter để xác nhận giá trị mặc định “System mail name”.
Đảm bảo rằng gói snap “core” đang chạy trên máy của bạn:
sudo snap install core
Cài đặt gói snap certbot từ Electronic Frontier Foundation (EFF):
sudo snap install certbot --classic
Đảm bảo rằng tường lửa của hệ thống không chặn bất kỳ cổng nào cho SimpleLogin:
sudo ufw allow 25,80,443/tcp
Chuẩn bị các bản ghi DNS
Đi tới công ty đăng ký tên miền của bạn và tạo bản ghi “A” mới trỏ đến địa chỉ IPv4 của máy bạn. Đặt giá trị hostname thành một subdomain mà bạn muốn cho phiên bản SimpleLogin của mình.
Thêm bản ghi “MX” cho root domain của bạn với tên server mục tiêu được đặt thành subdomain SimpleLogin của bạn.
Tạo bản ghi “TXT” cho root domain của bạn và đặt giá trị của nó thành như sau:
v=spf1 mx ~all
Tạo bản ghi “TXT” khác cho subdomain “_dmarc”, sau đó đặt giá trị của nó thành như sau:
v=DMARC1; p=quarantine; adkim=r; aspf=r
Mở Terminal, sau đó tạo cặp key DKIM bằng OpenSSL:
openssl genrsa -out dkim.key -traditional 1024
openssl rsa -in dkim.key -pubout -out dkim.pub.key
Chạy lệnh sau rồi sao chép kết quả của nó vào clipboard hệ thống của bạn. Đây là script sed mà các nhà phát triển sử dụng để trích xuất public key DKIM từ keyfile của nó:
sed "s/-----BEGIN PUBLIC KEY-----/v=DKIM1; k=rsa; p=/" $(pwd)/dkim.pub.key | sed "s/-----END PUBLIC KEY-----//" | tr -d '\n' | sed -e '$a\'
Tạo bản ghi “TXT” cho subdomain “dkim._domainkey”, sau đó đặt đầu ra của lệnh trước đó làm giá trị.
Tạo cơ sở dữ liệu Postgres
Ngoài việc sử dụng các bản ghi DNS đặc biệt, SimpleLogin còn tận dụng PostgresDB để quản lý email alias. Để thiết lập điều này, trước tiên hãy tạo các thư mục con cho SimpleLogin Docker container:
mkdir -p ~/sl/{pgp,db,upload}
Bắt đầu mạng ảo bằng Docker trên server của bạn:
sudo docker network create -d bridge \
--subnet=10.0.0.0/24 \
--gateway=10.0.0.1 \
sl-network
Dán lệnh sau vào terminal mới:
sudo docker run -d \
--name sl-db \
-e POSTGRES_PASSWORD=YOUR-RANDOM-PASSWORD-HERE \
-e POSTGRES_USER=postgres \
-e POSTGRES_DB=simplelogin \
-p 127.0.0.1:5432:5432 \
-v $(pwd)/sl/db:/var/lib/postgresql/data \
--restart always \
--network="sl-network" \
postgres:12.1
Thay đổi giá trị cho biến “POSTGRES_PASSWORD” bằng một chuỗi văn bản dài và ngẫu nhiên.
Lưu ý: Bạn có thể tạo chuỗi ngẫu nhiên này bằng cách chạy:
cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1
Chạy lệnh Docker đã sửa đổi để khởi động cơ sở dữ liệu của bạn.
Cấu hình Postfix cho SimpleLogin
Bắt đầu bằng cách xóa file cấu hình mặc định cho Postfix, sau đó tạo một file trống có cùng tên bằng trình soạn thảo văn bản yêu thích của bạn:
sudo rm /etc/postfix/main.cf && sudo nano /etc/postfix/main.cf
Dán block code sau vào file cấu hình mới của bạn. Đây là mẫu Postfix từ kho lưu trữ của nhà phát triển mà tác giả bài viết đã sửa đổi để highlight những phần mà bạn sẽ thêm tên miền server của mình:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = may
smtpd_tls_security_level = may
alias_maps = hash:/etc/aliases
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.0.0.0/24
mydestination =
myhostname = SUBDOMAIN.YOUR-ROOT.DOMAIN
mydomain = YOUR-ROOT.DOMAIN
myorigin = YOUR-ROOT.DOMAIN
relay_domains = pgsql:/etc/postfix/pgsql-relay-domains.cf
transport_maps = pgsql:/etc/postfix/pgsql-transport-maps.cf
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks,
reject_non_fqdn_helo_hostname,
reject_invalid_helo_hostname,
permit
smtpd_sender_restrictions =
permit_mynetworks,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
permit
smtpd_recipient_restrictions =
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit_mynetworks,
reject_unauth_destination,
reject_rbl_client zen.spamhaus.org=127.0.0.[2..11],
reject_rbl_client bl.spamcop.net=127.0.0.2,
permit
Thay đổi giá trị của “myhostname” bằng địa chỉ ứng dụng web của bạn, sau đó cập nhật giá trị của cả “mydomain” và “myorigin” thành root domain của bạn.
Liên kết Postgres với Postfix
Tạo một file “pgsql-relay-domains.cf” mới trong “/etc/postfix.” Điều này sẽ đóng vai trò là liên kết giữa Postfix và Postgres:
sudo nano /etc/postfix/pgsql-relay-domains.cf
Dán block code sau vào file cấu hình mới của bạn:
hosts = localhost
user = postgres
password = DATABASE-PASSWORD
dbname = simplelogin
query = SELECT domain FROM custom_domain WHERE domain='%s' AND verified=true
UNION SELECT domain FROM public_domain WHERE domain='%s'
UNION SELECT '%s' WHERE '%s' = 'mydomain.com' LIMIT 1;
Thay thế “DATABASE-PASSWORD” bằng mật khẩu Postgres của bạn.
Tạo một “pgsql-transport-maps.cf” mới trong cùng thư mục:
sudo nano /etc/postfix/pgsql-transport-maps.cf
Dán block code sau vào file cấu hình mới của bạn:
hosts = localhost
user = postgres
password = DATABASE-PASSWORD
dbname = simplelogin
query = SELECT 'smtp:127.0.0.1:20381' FROM custom_domain WHERE domain = '%s' AND verified=true
UNION SELECT 'smtp:127.0.0.1:20381' FROM public_domain WHERE domain = '%s'
UNION SELECT 'smtp:127.0.0.1:20381' WHERE '%s' = 'mydomain.com' LIMIT 1;
Cũng giống như cấu hình trước, hãy thay thế “DATABASE-PASSWORD” bằng mật khẩu Postgres của bạn.
Cài đặt SimpleLogin
Điều hướng đến thư mục chính của người dùng, sau đó tạo file môi trường cho SimpleLogin.
cd && nano ./simplelogin.env
Viết block code sau vào file môi trường mới của bạn:
URL=https://SUBDOMAIN.YOUR-ROOT.DOMAIN
EMAIL_DOMAIN=YOUR-ROOT.DOMAIN
SUPPORT_EMAIL=support@YOUR-ROOT.DOMAIN
EMAIL_SERVERS_WITH_PRIORITY=[(10, "SUBDOMAIN.YOUR-ROOT.DOMAIN.")]
DB_URI=postgresql://postgres:DATABASE-PASSWORD@sl-db:5432/simplelogin
FLASK_SECRET=ADD-A-NEW-RANDOM-STRING-HERE
DISABLE_ALIAS_SUFFIX=1
DKIM_PRIVATE_KEY_PATH=/dkim.key
GNUPGHOME=/sl/pgp
LOCAL_FILE_UPLOAD=1
POSTFIX_SERVER=10.0.0.1
Thay thế mọi phiên bản của “SUBDOMAIN.YOUR-ROOT.DOMAIN” bằng URL SimpleLogin của bạn.
Thay đổi giá trị của “YOUR-ROOT.DOMAIN” thành tên root domain.
Thay thế biến “DATABASE-PASSWORD” bằng mật khẩu Postgres của bạn.
Tạo một chuỗi ngẫu nhiên mới và đặt chuỗi đó làm giá trị “FLASK_SECRET”
Chạy các SimpleLogin Docker Container
Với thiết lập đó và đã sẵn sàng, giờ đây bạn có thể tìm nạp và chạy SimpleLogin Docker Container. Để bắt đầu, hãy nhập cơ sở dữ liệu Postgres vào bản cài đặt SimpleLogin của bạn:
sudo docker run --rm \
--name sl-migration \
-v $(pwd)/sl:/sl \
-v $(pwd)/sl/upload:/code/static/upload \
-v $(pwd)/dkim.key:/dkim.key \
-v $(pwd)/dkim.pub.key:/dkim.pub.key \
-v $(pwd)/simplelogin.env:/code/.env \
--network="sl-network" \
simplelogin/app:4.6.5-beta alembic upgrade head
Chạy Docker container cho script khởi tạo của SimpleLogin:
sudo docker run --rm \
--name sl-init \
-v $(pwd)/sl:/sl \
-v $(pwd)/simplelogin.env:/code/.env \
-v $(pwd)/dkim.key:/dkim.key \
-v $(pwd)/dkim.pub.key:/dkim.pub.key \
--network="sl-network" \
simplelogin/app:4.6.5-beta python init_app.py
Khởi động Docker container quản lý giao diện người dùng của ứng dụng:
sudo docker run -d \
--name sl-app \
-v $(pwd)/sl:/sl \
-v $(pwd)/sl/upload:/code/static/upload \
-v $(pwd)/simplelogin.env:/code/.env \
-v $(pwd)/dkim.key:/dkim.key \
-v $(pwd)/dkim.pub.key:/dkim.pub.key \
-p 127.0.0.1:7777:7777 \
--restart always \
--network="sl-network" \
simplelogin/app:4.6.5-beta
Chạy container xử lý email backend cho SimpleLogin:
sudo docker run -d \
--name sl-email \
-v $(pwd)/sl:/sl \
-v $(pwd)/sl/upload:/code/static/upload \
-v $(pwd)/simplelogin.env:/code/.env \
-v $(pwd)/dkim.key:/dkim.key \
-v $(pwd)/dkim.pub.key:/dkim.pub.key \
-p 127.0.0.1:20381:20381 \
--restart always \
--network="sl-network" \
simplelogin/app:4.6.5-beta python email_handler.py
Cuối cùng, khởi động container quản lý các tác vụ thông thường cho hệ thống SimpleLogin:
sudo docker run -d \
--name sl-job-runner \
-v $(pwd)/sl:/sl \
-v $(pwd)/sl/upload:/code/static/upload \
-v $(pwd)/simplelogin.env:/code/.env \
-v $(pwd)/dkim.key:/dkim.key \
-v $(pwd)/dkim.pub.key:/dkim.pub.key \
--restart always \
--network="sl-network" \
simplelogin/app:4.6.5-beta python job_runner.py
Tạo SSL Reverse Proxy với Nginx
Tại thời điểm này, SimpleLogin hiện đang chạy trên máy chủ tại cổng 7777. Để truy cập nó, bạn cần chuyển kết nối đi của nó thông qua SSL Reverse Proxy.
Tạo file trang web cho phiên bản SimpleLogin của bạn:
sudo nano /etc/nginx/sites-available/simplelogin
Dán block code sau vào file trang web của bạn:
server {
server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;
location / {
proxy_pass http://127.0.0.1:7777;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
}
Tạo một symlink cho file trang web của bạn trong “/etc/nginx/sites-enabled/”:
sudo ln -s /etc/nginx/sites-available/simplelogin /etc/nginx/sites-enabled/
Áp dụng cài đặt mới của bạn bằng cách khởi động lại daemon Nginx:
sudo systemctl restart nginx
Đăng ký phiên bản SimpleLogin của bạn với EFF bằng cách chạy lệnh sau:
sudo certbot register --agree-tos -m YOUR@EMAIL.ADDRESS
Yêu cầu chứng chỉ SSL mới cho reverse proxy của bạn:
sudo certbot --nginx -d SUBDOMAIN.YOUR-ROOT.DOMAIN
Mở file cấu hình Postfix bằng trình soạn thảo văn bản yêu thích của bạn:
sudo nano /etc/postfix/main.cf
Cuộn xuống các biến “smtpd_tls_cert_file” và “smtpd_tls_key_file” rồi thay thế chúng bằng các dòng code sau:
smtpd_tls_cert_file=/etc/letsencrypt/live/SUBDOMAIN.YOUR-ROOT.DOMAIN/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/SUBDOMAIN.YOUR-ROOT.DOMAIN/privkey.pem
Kiểm tra xem phiên bản SimpleLogin của bạn có chạy đúng cách hay không bằng cách mở subdomain của bạn trên trình duyệt và tạo tài khoản mới.
Tạo email alias với SimpleLogin
Quay lại phiên terminal của máy chủ, sau đó mở cơ sở dữ liệu của ứng dụng:
docker exec -it sl-db psql -U postgres simplelogin
Chạy phần sau để bật trạng thái Premium cho tài khoản chính của bạn:
UPDATE users SET lifetime = TRUE;
exit
Làm như vậy sẽ đảm bảo rằng tài khoản của bạn sẽ không có bất kỳ giới hạn nào đối với số lượng alias mà bạn có thể tạo cho email của mình.
Để tạo email alias đầu tiên của bạn, hãy nhấp vào nút New Custom Alias trên bảng điều khiển của ứng dụng web.
Lưu ý: Bạn cũng có thể tạo alias bằng tên ngẫu nhiên bằng cách nhấp vào nút Random Alias.
Cung cấp một tên dễ nhớ cho email alias mới của bạn, sau đó nhấp vào Create.
Kiểm tra xem email alias mới của bạn có hoạt động bình thường hay không bằng cách gửi thư đến địa chỉ email đó từ một địa chỉ email khác.
Gửi email từ alias SimpleLogin
Ngoài việc nhận thư từ alias, SimpleLogin còn hỗ trợ gửi thư qua alias. Để đạt được điều đó, ứng dụng sẽ tạo một “reverse alias” cho địa chỉ đích mà bạn có thể gửi email của mình.
Để thực hiện việc này, hãy nhấp vào nút Contacts trên alias mà bạn muốn gửi email từ đó. Trong trường hợp này, tác giả muốn gửi từ địa chỉ “hello-maketecheasier@myvpsserver.top” của mình.
Cung cấp địa chỉ email của người nhận, sau đó nhấp vào Create reverse-alias.
Nhấp vào nút Copy reverse-alias trên liên hệ mới của bạn, sau đó dán nó vào trường người nhận của ứng dụng email. Việc gửi thư đến địa chỉ tùy chỉnh này sẽ cho phép SimpleLogin ẩn email thực của bạn bằng alias của bạn đối với người nhận.
Tự host email alias server của riêng bạn bằng SimpleLogin chỉ là một trong những bước lấy lại quyền riêng tư kỹ thuật số của bạn. Kiểm soát toàn bộ chuỗi liên lạc kỹ thuật số của bạn bằng cách host email server của riêng bạn bằng Mail-in-a-Box.