Giải thích log của lệnh sendmail
Mục lục
Bài này sẽ dịch lại một phần của trang: http://sendmail.org/~ca/email/doc8.12/op-sh-2.html
Về nội dung liên quan đến format
log của sendmail
cũng ý nghĩa của từng trường.
0. Sendmail là gì
- Một phần mềm chạy trên hệ thống
Linux
(hoặc là *Nix). - Có nhiệm vụ gửi
mail
- ta nên dùng từphân phối
(delivery) thì sẽ chuẩn xác hơn. - Gửi mail (hay phân phối mail) nói đơn giản là sử dụng kết nối mạng (có thể là
internet
hoặc không) thực hiện gửi nội dungcó định dạng
bằng giao thức như SMTP,… đến máy chứa tài khoản người nhận. - Nội dung mail sẽ được máy chủ phía nhận phân phối đến đúng user ta đã gửi.
- Nó chẳng khác gì một ứng dụng mạng bằng
Socket
mà nhiều người vẫn học. - Nó chỉ khác là có các giao thức cụ thể để gửi dữ liệu (là các mail) đi thôi.
- Thường sẽ có 2 hình thức:
Gửi trực tiếp
vàGửi gián tiếp
. Gửi trực tiếp
: Gửi mạil từ máy đang chạy phần mềmsendmail
đến máy chủ của người nhận mail, một phát đến luôn.Gửi gián tiếp
: Chuyển mail đến một máy khác và nhờ máy đó đại diện gửi đến máy chủ của người nhận mail.- Ví dụ: ta có thể gửi mail thông qua server của Google mail (tất nhiên là có thông tin tài khoản Google rồi) đến một địa chỉ bất kì ta muốn.
- Khi đó, mail đó sẽ giống như ta gửi trực tiếp từ tài khoản Google Mail trên web thôi.
- Tức là gửi 1 mail từ máy chạy
sendmail
đến máy chủ của người nhận thông quaGoogle Mail
server.
1. Nói về syslog
- Hệ thống log hệ thống trong Linux được
quản ly
(thực ra là được vận chuyển) bởi phần mềm có tênsyslog
. - Sẽ có một chương trình chạy ngầm (dạng
daemon
) gọi làsyslogd
. - Chương trình này sẽ tiếp nhận hầu hết các log được
đẩy ra
từ các phần mềmhệ thống
đang chạy rồi đẩy ra một đầu ra khác (thường luôn làfile
) - Log của phần mêm
sendmail
cũng vậy.
2. Format
Mỗi dòng log cho ứng dụng
sendmail
trong hệ thống gôm :timestamp
, tên của máy đã tạo ra nó (để phân biệt với trường hợp log được tạo từ máy khác trong mạng), từsendmail:
, và một message đi kèm. Hầu hết các message bao gồm một dãy các cặpname = value
.Có 2 loại log phổ biến nhất khi các message (tức là log mà
sendmail
log ra ấy) được đưa ra.
2.1 Đầu tiên là log nhận
- Mỗi message chỉ có 1 dòng log. Một số trường có thể được bỏ qua nếu chúng không chứa thông tin hữu ích. Các trường của message này:
Tên trường | Ý nghĩa |
---|---|
from | Địa chỉ của phía gửi trên phong thư |
size | Kích thước (theo byte) của message |
class | Class của message |
pri | Độ ưu tiên ban đầu của message (sử dụng cho việc sắp xếp trong hàng đợi). |
nrcpts | Số lượng phong thư của phía nhận (sau khi aliasing và forwarding). |
msgid | Id của message (từ header). |
proto | Giao thức được sử dụng để nhận message (ví dụ: ESMTP or UUCP) |
daemon | Tên của chương trình chạy ngầm lấy từ giá trị DaemonPortOptions . |
relay | Cái máy mà message sẽ được nhận |
2.2 Log dành cho mỗi lần cố gắng gửi (phân phối)
- Có thể mỗi message có thể có nhiều log cho mỗi phân phối mail.
- Mỗi dòng sẽ tương ứng với 1 lần
- Các trường đó là:
Tên trường | Ý nghĩa |
---|---|
to | Danh sách người nhận được phân cách bởi dấu phảy (,). |
ctladdr | Là Controlling user (user điều khiển), đó là tên của user được sử dụng để xác thực khi phân phối mail. |
delay | Khoảng thời gian giữa khi message được nhận và thời điểm nó bị đẩy đi. |
xdelay | Khoảng thời gian cần để phân phối message (thông thường biểu thị tốc độ của kết nối internet). |
mailer | Tên của mailer được sử dụng để phân phối mail đến phía nhận. |
relay | Tên của host (có thể hiểu là máy chủ) thực sự chấp nhận (hoặc từ chối) địa chỉ người nhận. |
dsn | Mã lỗi bổ sung (RFC2034) nếu có |
stat | Trạng thái kết quả phân phối. |
Không phải lúc nào cũng có đủ các trường ở trên; ví dụ, relay thường không xuất hiện khi phân phối đến mạng cục bộ.