Cách tạo email alias ẩn danh bằng SimpleLogin

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.

Terminal hiển thị tùy chọn Internet Site trên trình cài đặt Postfix.
Terminal hiển thị tùy chọn Internet Site trên trình cài đặt Postfix.

Nhấn Enter để xác nhận giá trị mặc định “System mail name”.

Terminal hiển thị giá trị tên hệ thống mặc định cho server.
Terminal hiển thị giá trị tên hệ thống mặc định cho server.

Đả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.

Bản ghi cho SimpleLogin.
Bản ghi cho SimpleLogin.

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.

Bản ghi MX mẫu cho SimpleLogin.
Bản ghi MX mẫu cho SimpleLogin.

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
Bản ghi TXT mẫu cho SPF.
Bản ghi TXT mẫu cho SPF.

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
Bản ghi TXT cho DMARC.
Bản ghi TXT cho DMARC.

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ị.

Bản ghi TXT cho DKIM.
Bản ghi TXT cho DKIM.

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.

Terminal highlight mật khẩu Postgres ngẫu nhiên cho phiên bản SimpleLogin.
Terminal highlight mật khẩu Postgres ngẫu nhiên cho phiên bản SimpleLogin.

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.

Terminal highlight tên máy chủ và domain block cho file cấu hình Postfix.
Terminal highlight tên máy chủ và domain block cho file cấu hình Postfix.

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.

Terminal highlight mật khẩu Postgres trong file cấu hình chuyển tiếp Postfix.
Terminal highlight mật khẩu Postgres trong file cấu hình chuyển tiếp Postfix.

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.

Terminal hiển thị mật khẩu Postgres trong file cấu hình Postfix.
Terminal hiển thị mật khẩu Postgres trong file cấu hình Postfix.

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.

Terminal highlight các phần của file cấu hình cần bao gồm subdomain của máy chủ.
Terminal highlight các phần của file cấu hình cần bao gồm subdomain của máy chủ.

Thay đổi giá trị của “YOUR-ROOT.DOMAIN” thành tên root domain.

Terminal highlight các phần của file môi trường chỉ cần root domain của máy chủ.
Terminal highlight các phần của file môi trường chỉ cần root domain của máy chủ.

Thay thế biến “DATABASE-PASSWORD” bằng mật khẩu Postgres của bạn.

Terminal highlight phần file môi trường cần mật khẩu Postgres.
Terminal highlight phần file môi trường cần mật khẩu Postgres.

Tạo một chuỗi ngẫu nhiên mới và đặt chuỗi đó làm giá trị “FLASK_SECRET”

Terminal highlight phần file môi trường yêu cầu một chuỗi ngẫu nhiên mới.
Terminal highlight phần file môi trường yêu cầu một chuỗi ngẫu nhiên mới.

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.

Bảng điều khiển web SimpleLogin đang hoạt động.
Bảng điều khiển web SimpleLogin đang hoạt động.

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
Bảng điều khiển SimpleLogin chạy ở chế độ Premium.
Bảng điều khiển SimpleLogin chạy ở chế độ Premium.

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.

Bảng điều khiển SimpleLogin highlight nút New Custom Alias
Bảng điều khiển SimpleLogin highlight nút New Custom Alias

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.

Nút Create cho email alias mới.
Nút Create cho email alias mới.

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.

Thông báo mẫu gửi tới email alias.
Thông báo mẫu gửi tới email alias.

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.

Nút Contacts để tạo địa chỉ reverse alias.
Nút Contacts để tạo địa chỉ reverse alias.

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.

Thư được gửi tới một reverse alias.
Thư được gửi tới một reverse alias.

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.

Thứ Hai, 11/03/2024 16:29
51 👨 237
0 Bình luận
Sắp xếp theo