Tôi đang gặp vấn đề với hệ thống NAGIOS gửi email đến dịch vụ email-to-SMS phổ biến. Dịch vụ email-to-SMS nhận email có văn bản trong Subject:
dòng và gửi chúng đến số điện thoại di động được mã hóa trong To:
trường. Càng xa càng tốt. Đáng buồn thay, sendmail (và postfix trước khi nó) dường như được chèn một CRLF vu vơ vào (nhất thiết phải dài) Subject:
đường, và đó là gây tin nhắn SMS của tôi được rút ngắn tại CRLF khi và chỉ khi các Subject:
dòng chứa một hoặc nhiều dấu hai chấm qua những vu vơ CRLF.
Tôi tự tin rằng các tin nhắn đang được tạo chính xác, nhưng để chắc chắn, đây là tôi tạo ra một tin nhắn thử nghiệm hoàn toàn gật đầu với chính mình, với một Subject:
dòng dài :
echo "foo" | mail -s "1234567 101234567 201234567 301234567 401234567 501234567 601234567 701234567 801234567 90123456789" reaper@teaparty.net
Lưu ý rằng không có dấu hai chấm trong Subject:
dòng này ; tất cả những gì tôi đang làm ở đây là cho thấy một CRLF bổ sung được chèn vào dây. Đây là kết quả của sudo ngrep -x port 25
:
44 61 74 65 3a 20 46 72 69 2c 20 33 31 20 4d 61 Date: Fri, 31 Ma
79 20 32 30 31 33 20 31 30 3a 34 33 3a 35 35 20 y 2013 10:43:55
2b 30 31 30 30 0d 0a 54 6f 3a 20 72 65 61 70 65 +0100..To: reape
72 40 74 65 61 70 61 72 74 79 2e 6e 65 74 0d 0a r@teaparty.net..
53 75 62 6a 65 63 74 3a 20 31 32 33 34 35 36 37 Subject: 1234567
20 31 30 31 32 33 34 35 36 37 20 32 30 31 32 33 101234567 20123
34 35 36 37 20 33 30 31 32 33 34 35 36 37 20 34 4567 301234567 4
30 31 32 33 34 35 36 37 20 35 30 31 32 33 34 35 01234567 5012345
36 37 0d 0a 20 36 30 31 32 33 34 35 36 37 20 37 67.. 601234567 7
30 31 32 33 34 35 36 37 20 38 30 31 32 33 34 35 01234567 8012345
36 37 20 39 30 31 32 33 34 35 36 37 38 39 0d 0a 67 90123456789..
55 73 65 72 2d 41 67 65 6e 74 3a 20 48 65 69 72 User-Agent: Heir
6c 6f 6f 6d 20 6d 61 69 6c 78 20 31 32 2e 34 20 loom mailx 12.4
37 2f 32 39 2f 30 38 0d 0a 4d 49 4d 45 2d 56 65 7/29/08..MIME-Ve
72 73 69 6f 6e 3a 20 31 2e 30 0d 0a 43 6f 6e 74 rsion: 1.0..Cont
65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 ent-Type: text/p
6c 61 69 6e 3b 20 63 68 61 72 73 65 74 3d 75 73 lain; charset=us
Khoảng một nửa (được đánh dấu in đậm + in nghiêng), giữa 501234567
và 601234567
trong Subject:
tiêu đề ban đầu, bạn có thể thấy một CRLF được chèn ( 0x0d 0x0a
, trên bãi chứa hex bên trái, ..
trên văn bản đơn giản bên phải).
MTA nhận có vẻ rất vui khi xử lý hậu kỳ này và khi tôi nhìn vào thư được lưu trên đĩa ở đầu nhận, tôi chỉ thấy một LF (0x0a) trong dòng Tiêu đề: và dòng được phân tích chính xác và trong dòng của nó toàn bộ bởi, ví dụ , alpine
. Tuy nhiên, CRLF đang ở trên mạng và giữa tôi và những người hỗ trợ gửi email qua SMS (xuất sắc), chúng tôi đã xác định rằng đây là những nguyên nhân gây ra sự cố.
Vì vậy, câu hỏi của tôi là: một MTA có hợp pháp để chèn một CRLF vô cớ vào dây không?
Nếu đúng như vậy, và tôi có thể chứng minh điều đó, thì đó là vấn đề của nhà gửi email đến SMS, vì họ không khoan dung. Nếu không, hoặc là vậy nhưng tôi không thể chứng minh được thì nó trở thành vấn đề của tôi, vì vậy một câu trả lời với các tài liệu tham khảo sẽ hữu ích nhất.
Chỉnh sửa : Bây giờ tôi có thể làm sạch rằng dịch vụ email-SMS đang được đề cập là kapow . Khi vấn đề này được giải thích cho họ, họ đã giải quyết nó, làm việc với tôi để phát triển và thử nghiệm bản sửa lỗi và đã triển khai bản sửa lỗi. Dòng chủ đề dài của tôi với dấu hai chấm bây giờ được chuyển tiếp chính xác vào SMS. Tôi thường không thổi kèn các công ty riêng lẻ, đặc biệt là không phải trên SF, nhưng tôi nghĩ rằng đáng lưu ý rằng kapow Did The Right Thing. (Tuyên bố miễn trừ trách nhiệm: Tôi không có mối liên hệ nào với kapow ngoại trừ với tư cách là một khách hàng trả tiền, họ hài lòng về cách họ giải quyết vấn đề của mình.)