Tôi đang chơi với Exim và đã tạo một máy chủ thư có thể chấp nhận và gửi email ổn. Bây giờ, tôi muốn kích hoạt tính năng kiểm tra SPF cho mọi email đến để Đã nhận được SPF
tiêu đề được thêm vào những email này. Nhưng tôi dường như không thể tìm ra cách để làm điều này.
Bác sĩ nói, Hỗ trợ xác minh SPF được tích hợp vào Exim nếu SUPPORT_SPF=yes được đặt trong Local/Makefile. Bộ phận hỗ trợ sử dụng thư viện libspf2 https://www.libspf2.org/.
Nhưng tôi cho rằng một người chỉ có thể đặt tùy chọn này thành có nếu họ đang xây dựng Exim từ nguồn. Tôi đã cài đặt nó trực tiếp từ gói ubuntu (tôi tưởng tượng libspf2 được cài đặt tự động) và không biết vị trí của tệp Cục bộ/Tệp Makefile
Là. Tôi khá chắc chắn rằng điều này có thể được thực hiện khá dễ dàng nhưng tôi không có manh mối nào về điều này ngay bây giờ.
Tôi cũng đã kiểm tra thư mục cấu hình Exim và tìm thấy đoạn mã có liên quan sau đây trong 30_exim4-config_check_rcpt
tập tin.
Điều này nói rõ rằng, Exim sẽ kiểm tra bản ghi SPF của người gửi sau lệnh RCPT nếu kiểm tra SPF được bật và spf-công cụ-perl
được cài đặt. tôi đã cài đặt spf-công cụ-perl
mà vẫn không thấy Đã nhận được SPF
tiêu đề. Vì vậy, điều này đặt ra hai câu hỏi.
- Làm cách nào để bật kiểm tra SPF để cho phép thực thi mã này?
- Tại sao spf-tools-perl như tài liệu nói rõ ràng Exim sử dụng libspf. Tại sao hai thư viện sau đó?
# Sử dụng spfquery để thực hiện một cặp kiểm tra SPF.
#
# Điều này khá tốn kém về mặt tra cứu DNS (~6 lần tra cứu cho mỗi thư). Đừng
# bật nếu đó là sự cố. Cũng lưu ý rằng nếu bạn kích hoạt tính năng này, bạn phải
# cài đặt "spf-tools-perl" cung cấp lệnh spfquery.
# Thiếu spf-tools-perl sẽ kích hoạt "Lỗi không mong muốn trong
# Kiểm tra SPF" cảnh báo.
.ifdef CHECK_RCPT_SPF
phủ nhận
message = [SPF] $sender_host_address không được phép gửi thư từ \
${if def:sender_address_domain {$sender_address_domain}{$sender_helo_name}}.
log_message = Kiểm tra SPF không thành công.
!acl = acl_local_deny_exceptions
điều kiện = ${run{/usr/bin/spfquery.mail-spf-perl --ip \
${quote:$sender_host_address} --identity \
${if def:sender_address_domain \
{--scope mfrom --identity ${quote:$sender_address}}\
{--scope helo --identity ${quote:$sender_helo_name}}}}\
{no}{${if eq {$runrc}{1}{yes}{no}}}}
hoãn lại
thông báo = Lỗi DNS tạm thời khi kiểm tra bản ghi SPF. Thử lại sau.
!acl = acl_local_deny_exceptions
điều kiện = ${if eq {$runrc}{5}{yes}{no}}
cảnh báo
điều kiện = ${if <={$runrc}{6}{yes}{no}}
add_header = Đã nhận-SPF: ${if eq {$runrc}{0}{pass}\
{${if eq {$runrc}{2}{softfail}\
{${if eq {$runrc}{3}{neutral}\
{${if eq {$runrc}{4}{permerror}\
{${if eq {$runrc}{6}{none}{error}}}}}}}}}\
} client-ip=$sender_host_address; \
${if def:sender_address_domain \
{phong-từ=${sender_address}; }{}}\
helo=$sender_helo_name
cảnh báo
log_message = Lỗi không mong muốn khi kiểm tra SPF.
điều kiện = ${if >{$runrc}{6}{yes}{no}}
.endif```