Điểm:1

Postfix gây ra sự cố khi dịch vụ của nó được bật bằng systemctl và không khởi chạy khi khởi động

lá cờ ae

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 systemctltrạ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.

Điểm:1
lá cờ cn

Điều này nghe giống như xung đột SysV và systemd. Hãy thử tắt dịch vụ trong systemd và khởi động lại và xem nó có chạy không. Nó có thể sẽ được chạy.

Sudo systemctl vô hiệu hóa posfix
sudo init 6

Lưu ý rằng tôi sử dụng khởi tạo 6 bởi vì đó là cách thô sơ nhất để khởi động lại. Các khởi động lạitắt chức năng làm những việc bổ sung mà có thể gây tác dụng phụ. Phương pháp mới nhất thực sự là khởi động lại systemctl, nhưng tôi chưa sử dụng nó.

Điều đó sẽ không gây ra lỗi cho bạn và nó có khả năng đang chạy.

Nếu sử dụng SysV, thì bạn sẽ thấy các liên kết bên dưới /etc/rc?.d (ở đâu ? là một số từ 1 đến 6) đề cập đến hậu tố.

Ngoài ra, có thể hậu tố đó phát hiện ra rằng nó đã chạy bằng cách kiểm tra tệp PID thay vì kiểm tra xem một quy trình với PID đó có thực sự đang chạy hay không. Đó sẽ là nỗ lực tiếp theo của tôi. Tôi thường dừng sạch trước khi bắt đầu khi một quy trình không khởi động được để những lần dọn dẹp như vậy có cơ hội được thiết lập lại:

hậu tố dừng systemctl
systemctl bắt đầu hậu tố
Marty Cagas avatar
lá cờ ae
Cảm ơn bạn đã trả lời của bạn! Sau khi tắt Postfix trong _systemd_ và khởi động lại, nó không chạy khi kiểm tra `systemctl status postfix`, cũng như `postfix status` (theo hiểu biết của tôi là trình bao bọc riêng để kiểm soát máy chủ). Tôi sẽ xem xét SysV và xem liệu tôi có thể khởi chạy nó khi khởi động theo cách đó không.
Marty Cagas avatar
lá cờ ae
Cuối cùng, vấn đề không nằm ở SysV, mà là do tôi sử dụng `khởi động lại` thay vì `init 6` hoặc `systemctl reboot` đúng. Như đã giải thích trong một câu trả lời khác [tại đây](https://unix.stackexchange.com/a/64385/383614), chúng khác nhau về mặt kỹ thuật và trong tình huống này, sự khác biệt đủ để phá vỡ Postfix.Tôi không thể tìm ra nó nếu không có câu trả lời của bạn vì vậy tôi cảm thấy không đúng khi viết câu trả lời của riêng mình và chấp nhận nó, nhưng vì lợi ích của một người nào đó trong tương lai đang phải vật lộn với vấn đề tương tự, bạn có thể chỉnh sửa đề cập này thành câu trả lời?
lá cờ cn
@MartyCagas Đã xong.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.