Tôi có một máy chủ debian được cài đặt postfix, fail2ban, roundcube, webmin và dovecot. Tôi đã có thể gửi thư từ cổng 25, nhưng bất kể tôi cố gắng làm gì, tôi không thể làm cho nó hoạt động từ 465 và/hoặc 587 bất kể tôi thử phương pháp nào. Điều này xảy ra trong roundcube và ứng dụng thư, mặc dù tôi nghi ngờ rằng cả hai lỗi có thể khác nhau. Tôi đã thử nhiều thứ khác nhau trong vài ngày qua và cũng đọc một số giải pháp khả thi, nhưng cả hai giải pháp đều không hiệu quả với tôi nên sau tất cả, đây là những gì tôi có:
Roundcube config/config.inc.php:
<?php
$config['debug_level'] = 4;
$config['smtp_debug'] = true;
$config = [];
// Chuỗi kết nối cơ sở dữ liệu (DSN) cho thao tác đọc+ghi
// Định dạng (tương thích với PEAR MDB2): db_provider://user:password@host/database
// Các db_providers hiện được hỗ trợ: mysql, pgsql, sqlite, mssql, sqlsrv, oracle
// Để biết ví dụ, hãy xem http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php
// LƯU Ý: đối với SQLite, hãy sử dụng đường dẫn tuyệt đối (Linux): 'sqlite:////full/path/to/sqlite.db?mode=0646'
// hoặc (Windows): 'sqlite:///C:/full/path/to/sqlite.db'
$config['db_dsnw'] = 'mysql://user:pass@localhost/db';
// Máy chủ IMAP được chọn để thực hiện đăng nhập.
// Để trống để hiển thị hộp văn bản khi đăng nhập, đưa ra danh sách máy chủ
// để hiển thị menu kéo xuống hoặc đặt một máy chủ lưu trữ dưới dạng chuỗi.
// Nhập tên máy chủ với tiền tố ssl:// để sử dụng TLS tiềm ẩn hoặc sử dụng
// tiền tố tls:// để sử dụng STARTTLS.
// Các biến thay thế được hỗ trợ:
// %n - tên máy ($_SERVER['SERVER_NAME'])
// %t - tên máy không có phần đầu
// %d - tên miền (tên máy chủ http $_SERVER['HTTP_HOST'] không có phần đầu)
// %s - tên miền sau '@' từ địa chỉ email được cung cấp ở màn hình đăng nhập
// Ví dụ %n = mail.domain.tld, %t = domain.tld
$config['default_host'] = 'mail.domain.tld';
// Máy chủ SMTP host (để gửi thư).
// Nhập tên máy chủ với tiền tố ssl:// để sử dụng TLS tiềm ẩn hoặc sử dụng
// tiền tố tls:// để sử dụng STARTTLS.
// Các biến thay thế được hỗ trợ:
// %h - tên máy chủ IMAP của người dùng
// %n - tên máy ($_SERVER['SERVER_NAME'])
// %t - tên máy không có phần đầu
// %d - tên miền (tên máy chủ http $_SERVER['HTTP_HOST'] không có phần đầu)
// %z - Miền IMAP (tên máy chủ IMAP không có phần đầu)
// Ví dụ %n = mail.domain.tld, %t = domain.tld
// Để chỉ định các máy chủ SMTP khác nhau cho các máy chủ IMAP khác nhau, hãy cung cấp một mảng
// của máy chủ IMAP (không có tiền tố hoặc cổng) và máy chủ SMTP, ví dụ: ['imap.example.com' => 'smtp.example.net']
$config['smtp_server'] = 'tls://mail.domain.tld';
// Cổng SMTP. Sử dụng 25 cho văn bản rõ ràng, 465 cho TLS ẩn hoặc 587 cho STARTTLS (mặc định)
$config['smtp_port'] = 587;
// Tên người dùng SMTP (nếu cần) nếu bạn sử dụng %u làm tên người dùng Roundcube
// sẽ sử dụng tên người dùng hiện tại để đăng nhập
$config['smtp_user'] = '';
// Mật khẩu SMTP (nếu cần) nếu bạn sử dụng %p làm mật khẩu Roundcube
// sẽ sử dụng mật khẩu của người dùng hiện tại để đăng nhập
$config['smtp_pass'] = '%p';
// cung cấp một URL nơi người dùng có thể nhận hỗ trợ cho cài đặt Roundcube này
// VUI LÒNG KHÔNG LIÊN KẾT ĐẾN TRANG WEB ROUNDCUBE.NET TẠI ĐÂY!
$config['support_url'] = '';
// Đặt tên cho dịch vụ của bạn. Điều này được hiển thị trên màn hình đăng nhập và trong tiêu đề cửa sổ
$config['product_name'] = 'Webmail';
// Khóa này được sử dụng để mã hóa mật khẩu imap người dùng được lưu trữ
// trong bản ghi phiên. Đối với phương thức mật mã mặc định, nó phải là
// dài đúng 24 ký tự.
// KHÓA CỦA BẠN PHẢI KHÁC VỚI GIÁ TRỊ MẪU VÌ LÝ DO BẢO MẬT
$config['des_key'] = 'rcmail-random_key_here';
// Danh sách các plugin đang hoạt động (trong thư mục plugins/)
$config['plugin'] = [
'lưu trữ',
'tải xuống zip',
];
// tên skin: thư mục từ skin/
$config['skin'] = 'co giãn';
$config['imap_conn_options'] = mảng(
'ssl' => mảng('verify_peer' => true, 'verfify_peer_name' => false),
'tls' => mảng('verify_peer' => true, 'verfify_peer_name' => false),
);
$config['default_host'] = 'ssl://mail.domain.tld';
$config['default_port'] = '993';
$config['smtp_server'] = 'tls://mail.domain.tld';
$config['smtp_port'] = '587';
$config['smtp_debug'] = true;
Hiện tại, tôi có thể nhận email ở dạng roundcube tại cổng 143 và 993, nhưng tôi chỉ có thể gửi từ cổng 25. Đây là lỗi tôi gặp phải khi cố gắng gửi email từ 587:
Lỗi SMTP (554): Không thể thêm người nhận "[email protected]" (5.7.1 <[email protected]>: Địa chỉ người nhận bị từ chối: Truy cập bị từ chối).
Đây là những gì roundcube log/smtp.log hiển thị:
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Đang kết nối với tls://mail.hlebarkite.bg:587...
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 220 mail.domain.ltd ESMTP Postfix
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Gửi: EHLO webmail.domain.ltd
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-mail.domain.ltd
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-PIPELINING
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-SIZE 10240000
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-VRFY
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-ETRN
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-STARTTLS
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-ENHANCEDSTATUSCODES
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-8BITMIME
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-DSN
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250-SMTPUTF8
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250 CHUNKING
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Gửi: THƯ TỪ:<[email protected]>
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250 2.1.0 Ok
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Gửi: RCPT ĐẾN:<[email protected]>
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 554 5.7.1 <[email protected]>: Địa chỉ người nhận bị từ chối: Truy cập bị từ chối
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Gửi: RSET
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 250 2.0.0 Ok
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Gửi: QUIT
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Recv: 221 2.0.0 Tạm biệt
Đây là những gì log/error.log hiển thị:
[10-Mar-2022 00:08:05 +0200]: <gqnft6kr> Lỗi SMTP: Không thể thêm người nhận '[email protected]'. 5.7.1 <[email protected]>: Địa chỉ người nhận bị từ chối: Truy cập bị từ chối (Mã: 554) trong /home/webmail/program/lib/Roundcube/rcube.php trên dòng 1774 (POST /?_task=mail&_unlock=loading1646863684782&_framed= 1&_action=gửi)
Nếu tôi cố gắng gửi một email như vậy:
echo "kiểm tra nội dung thư" | thư -s "kiểm tra" [email protected]
Tôi nhận được thông tin sau trong /var/log/mail.log
Ngày 10 tháng 3 00:12:11 đèn postfix/submission/smtpd[1126]: kết nối từ không xác định[xx.xx.xx.xx - đây là IP máy chủ]
Ngày 10 tháng 3 00:12:11 đèn postfix/submission/smtpd[1126]: cảnh báo: SASL: Kết nối với private/auth không thành công: Không có tệp hoặc thư mục như vậy
Ngày 10 tháng 3 00:12:11 hậu tố đèn/gửi/smtpd[1126]: gây tử vong: không có cơ chế xác thực SASL
Ngày 10 tháng 3 00:12:12 đèn postfix/master[1300]: cảnh báo: process /usr/lib/postfix/sbin/smtpd pid 1126 trạng thái thoát 1
Ngày 10 tháng 3 00:12:12 đèn postfix/master[1300]: cảnh báo: /usr/lib/postfix/sbin/smtpd: khởi động lệnh sai -- điều tiết
Ngày 10 tháng 3 00:12:12 postfix đèn/smtp[1125]: C520F1300420: to=<[email protected]>, relay=mail.domain.ltd[xx.xxx.xx.xx ip máy chủ]:587, độ trễ= 1.1, delays=0.09/0.01/1/0, dsn=4.4.2, status=deferred (mất kết nối với mail.domain.ltd[xx.xx.xx.xx server IP] trong khi thực hiện bắt tay EHLO)
Nếu tôi cố gửi email từ ứng dụng thư khách thì tôi thấy lỗi này:
Lỗi được báo cáo là âLệnh HELO không thành công: Lỗi nhận dữ liệu: Thiết lập lại kết nối bởi ngang hàngâ.
Đây là những gì postconf -n trông giống như:
postconf: cảnh báo: /etc/postfix/master.cf: tham số không xác định: mua_sender_restrictions
postconf: cảnh báo: /etc/postfix/master.cf: tham số không xác định: mua_client_restrictions
postconf: cảnh báo: /etc/postfix/master.cf: tham số không xác định: mua_helo_restrictions
postconf: cảnh báo: /etc/postfix/master.cf: tham số không xác định: mua_sender_restrictions
postconf: cảnh báo: /etc/postfix/master.cf: tham số không xác định: mua_client_restrictions
postconf: cảnh báo: /etc/postfix/master.cf: tham số không xác định: mua_helo_restrictions
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = không
biff = không
mức độ tương thích = 2
inet_protocols = tất cả
hộp thư_size_limit = 0
mydestination = localhost.$mydomain, localhost, $myhostname
tên miền của tôi = mail.domain.ltd
myhostname = mail.domain.ltd
mạng của tôi = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
mynetworks_style = mạng con
readme_directory = không
người nhận_delimiter = +
relayhost = [mail.domain.ltd]:587
smtp_sasl_auth_enable = có
smtp_sasl_password_maps = tĩnh: tên người dùng: mật khẩu
smtp_sasl_security_options = vô danh
smtp_tls_security_level = có thể
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = có
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination permit_inet_interfaces
smtpd_sasl_path = riêng tư/xác thực
smtpd_sasl_security_options =
smtpd_sasl_type = bồ câu
smtpd_tls_CAfile = /var/lib/dehydrated/certs/mail.domain.ltd/fullchain.pem
smtpd_tls_cert_file = /var/lib/dehydrated/certs/mail.domain.ltd/cert.pem
smtpd_tls_key_file = /var/lib/dehydrated/certs/mail.domain.ltd/privkey.pem
smtpd_tls_security_level = có thể
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = có
virtual_alias_maps = hash:/etc/postfix/virtual
Đây là cách /etc/postfix/main.cf trông giống như:
# Xem /usr/share/postfix/main.cf.dist để biết phiên bản đầy đủ hơn đã nhận xét
# Debian cụ thể: Chỉ định tên tệp sẽ gây ra lỗi đầu tiên
# dòng của tệp đó sẽ được sử dụng làm tên. Mặc định của Debian
# là /etc/mailname.
#myorigin = /etc/mailname
biff = không
# nối thêm .domain là công việc của MUA.
append_dot_mydomain = không
# Bỏ ghi chú dòng tiếp theo để tạo cảnh báo "thư bị trì hoãn"
#delay_warning_time = 4h
readme_directory = không
# Xem http://www.postfix.org/COMPATIBILITY_README.html -- mặc định là 2 trên
# lượt cài đặt mới.
mức độ tương thích = 2
# Thông số TLS
smtpd_tls_cert_file = /var/lib/dehydrated/certs/mail.domain.ltd/cert.pem
smtpd_tls_key_file = /var/lib/dehydrated/certs/mail.domain.ltd/privkey.pem
smtpd_use_tls=có
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = có thể
# Xem /usr/share/doc/postfix/TLS_README.gz trong gói postfix-doc để biết
# thông tin về kích hoạt SSL trong ứng dụng khách smtp.
#smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination permit_inet_interfaces
myhostname = mail.domain.ltd
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#mydestination = $myhostname, mail.domain.ltd, localdomain, localhost, localhost.localdomain, localhost
# kiểm tra
mydestination = localhost.$mydomain, localhost, $myhostname
mạng của tôi = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.0/24
hộp thư_size_limit = 0
người nhận_delimiter = +
inet_protocols = tất cả
virtual_alias_maps = hash:/etc/postfix/virtual
smtp_use_tls = có
smtpd_tls_CAfile = /var/lib/dehydrated/certs/mail.domain.ltd/fullchain.pem
#smtpd_recipient_restrictions = permit_mynetworks permit_inet_interfaces permit_sasl_authenticated
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination permit_inet_interfaces
smtpd_tls_security_level = có thể
mynetworks_style = mạng con
#mydomain = tên miền cục bộ
# kiểm tra
tên miền của tôi = mail.domain.ltd
smtpd_sasl_security_options =
# kiểm tra
relayhost = [mail.domain.ltd]:587
smtp_sasl_auth_enable = có
smtp_sasl_password_maps = tĩnh: tên người dùng: mật khẩu
smtp_sasl_security_options = vô danh
smtpd_sasl_path = riêng tư/xác thực
smtpd_sasl_type = bồ câu
Đây là cách /etc/postfix/master.cf trông giống như:
#
# Tệp cấu hình quy trình tổng thể Postfix. Để biết chi tiết về định dạng
# của tệp, xem trang hướng dẫn chính (5) (lệnh: "man 5 master" hoặc
# trực tuyến: http://www.postfix.org/master.5.html).
#
# Đừng quên thực hiện "tải lại postfix" sau khi chỉnh sửa tệp này.
#
# ================================================= ==========================
# loại dịch vụ riêng tư unpriv đánh thức chroot lệnh maxproc + args
# (có) (có) (không) (không bao giờ) (100)
# ================================================= ==========================
smtp inet n - y - - smtpd
smtp inet n - y - 1 màn hình sau
vượt qua smtpd - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
tlsproxy unix - - y - 0 tlsproxy
đệ trình inet n - y - - smtpd
-o syslog_name=postfix/gửi
-o smtpd_tls_security_level=có thể
-o smtpd_sasl_auth_enable=có
-o smtpd_tls_auth_only=có
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=$mua_client_restrictions
-o smtpd_helo_restrictions=$mua_helo_restrictions
-o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,từ chối
-o milter_macro_daemon_name=BẮT ĐẦU
smtps inet n - y - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=có
-o smtpd_sasl_auth_enable=có
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=$mua_client_restrictions
-o smtpd_helo_restrictions=$mua_helo_restrictions
-o smtpd_sender_restrictions=$mua_sender_restrictions
-o smtpd_recipient_restrictions=
-o smtpd_relay_restrictions=permit_sasl_authenticated,từ chối
-o milter_macro_daemon_name=BẮT ĐẦU
#628 inet n - y - - qmqpd
đón unix n - y 60 1 đón
dọn dẹp unix n - y - 0 dọn dẹp
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - y 1000? 1 tlsmgr
viết lại unix - - y - - viết lại tầm thường
bị trả lại unix - - y - 0 bị trả lại
trì hoãn unix - - y - 0 thoát
theo dõi unix - - y - 0 bị trả lại
xác minh unix - - y - 1 xác minh
tuôn ra unix n - y 1000? 0 tuôn ra
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
chuyển tiếp unix - - y - - smtp
-o syslog_name=postfix/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - y - - showq
lỗi unix - - y - - lỗi
thử lại unix - - y - - lỗi
loại bỏ unix - - y - - loại bỏ
unix cục bộ - n n - - cục bộ
unix ảo - n n - - ảo
lmtp unix - - y - - lmtp
đe unix - - y - 1 đe
scache unix - - y - 1 scache
postlog unix-dgram n - n - 1 postlogd
#
# ================================================= ===================
# Giao diện cho phần mềm không phải Postfix. Hãy chắc chắn kiểm tra hướng dẫn
# trang của phần mềm không phải Postfix để tìm ra những tùy chọn mà nó muốn.
#
# Nhiều dịch vụ sau sử dụng phân phối Postfix pipe(8)
# đại lý. Xem trang man pipe(8) để biết thông tin về ${recipient}
# và các tùy chọn phong bì thư khác.
# ================================================= ===================
#
# gửi thư. Xem tệp Postfix MAILDROP_README để biết chi tiết.
# Cũng chỉ định trong main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ================================================= ===================
#
# Các phiên bản Cyrus gần đây có thể sử dụng mục "lmtp" master.cf hiện có.
#
# Chỉ định trong cyrus.conf:
# lmtp cmd="lmtpd -a" nghe="localhost:lmtp" proto=tcp4
#
# Chỉ định trong main.cf một hoặc nhiều điều sau:
# mailbox_transport = lmtp:inet:localhost
# virtual_transport = lmtp:inet:localhost
#
# ================================================= ===================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Cũng chỉ định trong main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - ống
# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ================================================= ===================
# Ví dụ cũ về giao hàng qua Cyrus.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ================================================= ===================
#
# Xem tệp Postfix UUCP_README để biết chi tiết về cấu hình.
#
uucp unix - n n - - ống
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($người nhận)
#
# Các phương thức giao hàng bên ngoài khác.
#
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - ống
cờ = Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 ống
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
người đưa thư unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${người dùng}
Mọi sự trợ giúp sẽ rất được trân trọng.