Trên một đá Linux phiên bản 8.5 (hạ lưu Red Hat Enterprise Linux tương thích với lỗi theo lỗi), tôi đã định cấu hình thiết lập Postfix + Dovecot. Sau khi khắc phục tất cả các lỗi cấu hình, tôi đã đạt đến điểm mà cả hai dịch vụ ít nhất sẽ khởi chạy.
systemctl kích hoạt dovecot.service
systemctl kích hoạt postfix.service
Sau khi khởi động lại máy, tôi có thể thấy Dovecot đã khởi chạy đúng cách khi được truy vấn bằng cách sử dụng trạng thái systemctl dovecot
. Mặt khác, Postfix không khởi động được, báo cáo:
[root@mail ~]# hậu tố trạng thái systemctl
â postfix.service - Đại lý vận chuyển thư Postfix
Đã tải: đã tải (/usr/lib/systemd/system/postfix.service; đã bật; giá trị đặt sẵn của nhà cung cấp: đã tắt)
Hoạt động: không thành công (Kết quả: mã thoát) kể từ ...; 12 phút trước
Quá trình: 1419 ExecStart=/usr/sbin/postfix bắt đầu (mã=đã thoát, trạng thái=1/THẤT BẠI)
Quá trình: 1396 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Quá trình: 1364 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
systemd[1]: Bắt đầu Postfix Mail Transport Agent...
postfix/postfix-script[1506]: fatal: hệ thống thư Postfix đã chạy
systemd[1]: postfix.service: Quá trình điều khiển đã thoát, mã=trạng thái đã thoát=1
systemd[1]: postfix.service: Không thành công với kết quả là 'mã thoát'.
systemd[1]: Không khởi động được Postfix Mail Transport Agent.
Kiểm tra nhanh bằng cách sử dụng trạng thái hậu tố
cho thấy thực sự nó không chạy. Mặc dù đáng ngạc nhiên, bắt đầu hậu tố
sau đó bắt đầu dịch vụ mà không có bất kỳ vấn đề. truy vấn trạng thái hậu tố
sau đó báo cáo Postfix đang chạy vui vẻ với một PID mới. truy vấn hậu tố trạng thái systemctl
một lần nữa sau đó hiển thị báo cáo lỗi không thay đổi so với trước đó.
Tuy nhiên, lỗi được báo cáo không có ý nghĩa gì. tôi có thể systemctl vô hiệu hóa hậu tố
, khởi động lại máy, kiểm tra xem Postfix có thực sự không chạy bằng cả hai hậu tố trạng thái systemctl
và trạng thái hậu tố
, hãy thử kích hoạt nó bằng cách sử dụng systemctl bắt đầu hậu tố
và nhận được cùng một lỗi.
Hơn nữa, nếu tôi tắt dịch vụ Postfix trong systemd, hãy khởi động lại máy và chỉ khởi động nó với bắt đầu hậu tố
, dịch vụ bắt đầu, nhưng hậu tố trạng thái systemctl
báo cáo là đã tải, không hoạt động ...
[root@mail ~]# bắt đầu hậu tố
postfix/postfix-script: khởi động hệ thống thư Postfix
[root@mail ~]# trạng thái hậu tố
postfix/postfix-script: hệ thống thư Postfix đang chạy: PID: 2169
[root@mail ~]# hậu tố trạng thái systemctl
â postfix.service - Đại lý vận chuyển thư Postfix
Đã tải: đã tải (/usr/lib/systemd/system/postfix.service; bị vô hiệu hóa; cài đặt sẵn của nhà cung cấp: bị vô hiệu hóa)
Đang hoạt động: không hoạt động (đã chết)
[root@mail ~]#
Tại sao Postfix trên RHEL thậm chí còn được đăng ký như một dịch vụ khi nó từ chối hoạt động như vậy? Và cách thích hợp để đảm bảo Postfix bắt đầu khi khởi động là gì?
Ghi chú: tôi đã thử hậu tố chkconfig trên
như tôi thấy nó được đề xuất bởi những người trực tuyến. Điều đó chỉ chuyển tiếp yêu cầu đến systemctl kích hoạt postfix.service
dẫn tôi trở lại từ đầu.
... tôi có thực sự phải hack nó khi sử dụng không /etc/rc.local
, khi bản thân nội dung của tệp cho biết nó chỉ dành cho mục đích tương thích, thì không nên sử dụng nữa và tôi có nên cân nhắc làm việc với các dịch vụ systemd không?
CẬP NHẬT 1: Tôi đã thực hiện theo cách có vẻ như là một cách giải quyết hợp lý trong thời điểm hiện tại - bắt đầu hậu tố bằng cách sử dụng bắt đầu hậu tố
lệnh trong /etc/rc.local
. Sau khi khởi động lại, Postfix vẫn không chạy. Kiểm tra trạng thái của dịch vụ rc-local bằng cách sử dụng trạng thái systemctl rc-local
, dịch vụ không khởi động được, lý do trong nhật ký hoàn toàn giống với lý do được nêu trong nhật ký dịch vụ Postfix sau khi tôi kích hoạt nó thông qua hệ thống
- "gây tử vong: hệ thống thư Postfix đã chạy".Postfix chỉ đơn giản là không khởi động được khi khởi động trong mọi điều kiện.