Làm thế nào để hạn chế email tạm khi vận hành dịch vụ web
Khi vận hành một dịch vụ web hay SaaS như FlashPanel, một trong những vấn đề đau đầu là người dùng đăng ký bằng email tạm. Email tạm thường là những email dùng một lần (disposable email) được tạo ra để qua mặt đăng ký, và nhìn chung:
- Không có giá trị thực sự, vì người dùng có thể không quay lại.
- Lãng phí tài nguyên hệ thống: gửi email xác thực, lưu trữ dữ liệu, tính toán thống kê, …
- Làm méo mó dữ liệu người dùng thật, ảnh hưởng đến phân tích và marketing.
Vì vậy, cần lọc ngay từ khâu đăng ký, đảm bảo người dùng là thật.
Cách mình làm ở FlashPanel
Mình sử dụng package Laravel Disposable Email để lọc email tạm:
- Cài đặt package:
composer require propaganistas/laravel-disposable-email
Laravel sẽ tự động phát hiện service provider.
- Publish file config và tùy chỉnh:
php artisan vendor:publish --tag=laravel-disposable-email
- Mọi dữ liệu các email tạm được lấy từ URL chính:
https://cdn.jsdelivr.net/gh/disposable/disposable-email-domains@master/domains.json
- Nhưng vấn đề là các email tạm do dịch vụ ở Việt Nam tạo chưa có trong danh sách, nên cần custom thêm.
- Tạo fetcher custom để bổ sung email tạm Việt Nam:
- Tạo file
app/DisposableEmail/Fetcher.php
<?php namespace App\DisposableEmail; use InvalidArgumentException; use Propaganistas\LaravelDisposableEmail\Fetcher\DefaultFetcher; use UnexpectedValueException; class Fetcher extends DefaultFetcher { /** * @param string $url * @return string[] */ public function handle($url): array { if (! $url) { throw new InvalidArgumentException('Source URL is null'); } $content = file_get_contents($url); if ($content === false) { throw new UnexpectedValueException('Failed to interpret the source URL ('.$url.')'); } if (! $this->isValidJson($content)) { throw new UnexpectedValueException('Provided data could not be parsed as JSON'); } /** @var array<int, string> $data */ $data = json_decode($content); array_push( $data, 'mail22h.com', 'mailauto.store', 'mail22h.shop', 'mail22h.online', ); return $data; } }
- Trong
config/disposable-email.php
thay:
'fetcher' => App\DisposableEmail\Fetcher::class,
Điều này cho phép bạn kiểm soát danh sách email tạm bổ sung theo nhu cầu.
Bước tiếp theo: whitelist email đáng tin cậy
Khi có người dùng đăng ký mới:
- Nếu email thuộc whitelist như Gmail, Yahoo, Outlook, ProtonMail… thì xem xét xét thêm trước khi quyết định xóa hay chặn.
- Những email còn lại có thể được đánh dấu là email tạm, từ đó ngăn đăng ký hoặc yêu cầu xác thực bổ sung.
Kết quả
- Giảm đáng kể tỷ lệ đăng ký rác.
- Tài nguyên hệ thống được sử dụng cho người dùng thật.
- Dữ liệu và báo cáo người dùng chính xác hơn.
Kết luận: Lọc email tạm ngay từ đăng ký là bước quan trọng với bất kỳ dịch vụ nào muốn phát triển bền vững. Với Laravel, việc sử dụng Laravel Disposable Email cùng custom fetcher là cách đơn giản, hiệu quả để đảm bảo người dùng thật.
Ủng hộ Chung Nguyễn Blog
Chung Nguyễn Blog sử dụng FlashPanel - Dịch vụ quản trị máy chủ chuyên nghiệp để quản lý VPS
#FlashPanel là dịch vụ cloud panel trên nền tảng web hỗ trợ khách hàng:
- * Quản lý máy chủ số lượng nhiều
- * Không có kinh nghiệm quản lý máy chủ
- * Thích sử dụng giao diện web đơn giản, trực quan hơn terminal
- * Quá nhàm chán với việc ghi nhớ và lặp lại việc gõ các câu lệnh
- * Muốn tự động hóa mọi thao tác
- * Muốn tiết kiệm thời gian quản trị máy chủ
- * Muốn tiết kiệm tiền bạc, nhân lực quản trị máy chủ 👉 https://flashpanel.io
Các bài viết trên website thường xuyên được đăng tải và cập nhật trên trang Facebook Chung Nguyễn Blog hãy tặng cho Chung một LIKE nhé! Mãi yêu các bạn!
813 👍Đánh giá bài viết

Bình luận