Tạo lập mail server trên hệ thống GNU/Linux (Phần 4)

Đây là bài tiếp của bài sau đây

Advance mail server

Bây giờ chúng ta hãy mở rộng những thiết lập này với nhiều xử lý check tiện lợi, bảo mật và các giao diện người dùng.

Kiểm tra nội dung (Anti spam & Anti virus)

Amavisd-new

Amavisd là sự kết hợp của nhiều phương pháp kiểu tra nội dung email trước spam và các loại virus.

Cài đặt amavids-new

sudo apt-get install amavisd-new

Thiết lập mặc định khá tốt và cả Ubuntu documentation cũng rất rõ ràng, và được khuyến khích dùng.

Đây là một phiên bản đã được tinh chỉnh của nó:

Ban đầu chúng ta sẽ không bật chế độ phát hiện spam hoặc virus! Nhờ đó ta có thể thiết lập amavis để kiểm tra và chuyển emails trước khi ta làm cho nó trở nên qua phức tạp. Tất cả các file thiết lập của amavis được đặt trong /etc/amavisd/. Hiện tại chúng cũng rải rác một số file ở conf.d. Bây giờ Debian và Ubuntu mặc định chia nó ra nhiều files riêng rẽ một cách rất hợp lý.

cd /etc/amavis/conf.d

01-debian mặc định không có vấn đề gì.

Hãy nhìn vào đây:

less 05-domain_id

nhưng đừng thay đổi gì trong đó.

Và nhìn tiếp vào

less 05-node_id

nhưng đừng thay đổi gì trong đó.

Cuối cùng hãy xem file

less 15-av_scanners

và không thay đổi gì trong đó.

Thay đổi file kiểm tra content

sudo vi 15-content_filter_mode

Comment out cả phần scans virus lẫn spam. (mặc định)

# #@bypass_virus_checks_maps = (
#   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
# @bypass_spam_checks_maps = (
#   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Tiếp theo hãy xem file sau:

less 20-debian_defaults

và file

less 21-debian_defaults

nhưng đừng thay đổi nội dung các file này.

Các file 25-amavis_helpers30-template-localization thì nội dung có thể dùng mặc định.

Sửa lại file user

sudo vi 50-user

ở giữa file, hãy thêm đoạn sau vào:

@local_domains_acl = qw(.);
$log_level = 2;
$syslog_priority = 'debug';
# $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
# $sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 8.0; # triggers spam evasive actions
# $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
$final_spam_destiny = D_PASS;
# $final_spam_destiny = D_REJECT; # default 
# $final_spam_destiny = D_BOUNCE; # debian default 
# $final_spam_destiny = D_DISCARD; # ubuntu default, recommended as sender is usually faked

Bây giờ ta đã thiết lập xog amavis để có thể quét và chuyển các email gửi đến. Tiếp theo ta sẽ cài đặt postfix để có thể giao tiếp với amavis.

sudo vi /etc/postfix/master.cf

Thêm các dòng sau vào cuối file (hãy chắc chắn là trong file không có sẵn các dòng này). (Chú ý là các dòng có -o thì có các khoảng trống ở đầu dòng)

amavis      unix    -       -       -       -       2       smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
        -o max_use=20
127.0.0.1:10025 inet    n       -       -       -       -       smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_delay_reject=no
        -o smtpd_client_restrictions=permit_mynetworks,reject
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=reject_unauth_pipelining
        -o smtpd_end_of_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
        -o smtpd_client_connection_count_limit=0
        -o smtpd_client_connection_rate_limit=0
        -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

Tiếp theo hãy thêm hai dòng sau đây vào ngay dưới transport service "pickup"

 -o content_filter=
        -o receive_override_options=no_header_body_checks

và thêm vào file main.cf

sudo vi /etc/postfix/main.cf

nội dung sau:

content_filter = amavis:[127.0.0.1]:10024

Amavis sẽ phải hoạt động chuẩn sau thiết lập trên. Nếu email được lấy bởi amavis và chuyển lại cho postfix thì OK. Chỉ khi kết thúc testing bạn mới tiếp tục uncomment các dòng thiết lập anti virus và anti spam.

sudo vi 15-content_filter_mode
@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Tuy nhiên hãy làm điều này ở phần khác (SpamAssassin).

Khi mọi thứ hoạt động chúng ta sẽ giảm logging level và bắt đầu check spam.

sudo vi /etc/amavis/conf.d/50-user
@local_domains_acl = qw(.);
$log_level = 1;
$syslog_priority = 'info';
# $sa_tag_level_deflt = 2.0; # add spam info headers if at, or above that level
# $sa_tag2_level_deflt = 6.31; # add 'spam detected' headers at that level
$sa_kill_level_deflt = 8.0; # triggers spam evasive actions
# $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent
# $final_spam_destiny = D_PASS;
# $final_spam_destiny = D_REJECT; # default 
# $final_spam_destiny = D_BOUNCE; # debian default 
$final_spam_destiny = D_DISCARD; # ubuntu default, recommended as sender is usually faked

Anti-Spam

SpamAssassin

Cài đặt :

sudo apt-get install spamassassin spamc

Thiết lập mặc định của Spam Assassin có thể sử dụng được.

Bạn cần phải ra lệnh cho SpamAssassin khởi động smapd on boot.

sudo vi /etc/default/spamassassin
ENABLED=1

Sau khi đã thiết lập thành công, bạn có thể tinh chỉnh và bật Bayes lên và auto learning.

sudo vi /etc/spamassassin/local.cf

Anti Virus

ClamAV

Cài đặt:

sudo apt-get install clamav clamav-base libclamav6 clamav-daemon clamav-freshclam

(Các version Ubuntu cũ hơn có thể cần sử dụng libclamav5)

ClamAV không cần phải cài đặt. File thiết lập được đặt trong /etc/clamav, nhưng nó được generate tự động vì vậy đừng sửa file.

Mặc định thì freshclam, một daemon cập nhật cơ sở dữ liệu định nghĩa virus, được chạy 24 lần 1 ngày. Có vẻ hơi nhiều, vì vậy thôi thường sửa nó về chỉ cập nhật 1 lần 1 ngày.

sudo dpkg-reconfigure clamav-freshclam

Nó sẽ hỏi rằng bạn có muốn dùng daemon (yes) và server nào gần với bạn nhất. Nếu cần, câu lệnh dưới đây sẽ định nghĩa lại thiết lập với nhiều câu hỏi. Nó không cần thiết trừ khi bạn thật sự muốn thiết lập lại.

sudo dpkg-reconfigure clamav-base

Cho phép scan bằng ClamAV trong các file tạm thời của amavis.

sudo adduser clamav amavis

Postgrey

Cài đặt:

sudo apt-get install postgrey

Thiết lập mặc định của postgrey có thể sử dụng luôn. Tuy nhiên bạn cần ra lệnh cho Postfix sử dụng nó.

sudo vi /etc/postfix/main.cf

Và thay đổi phần giới hạn người nhận:

smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated,
		reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination,
		check_policy_service inet:127.0.0.1:10023, permit

Bạn có thể tinh chỉnh whitelisst trong /etc/postgrey. Bạn cũng có thể tinh chỉnh thiết lập của postgrey trong file /etc/default/postgrey, ví dụ như delay, whitelisting hoặc reject message.

POSTGREY_OPTS="--inet=10023 --max-age=365"