Tôi có thể thiết lập thư hệ thống để sử dụng máy chủ SMTP bên ngoài không?


72

Có thể thiết lập thư hệ thống trên hộp linux để được gửi qua một máy chủ smtp khác - thậm chí có thể có xác thực? Nếu vậy, làm thế nào để tôi làm điều này?

Nếu điều đó không rõ ràng, hãy cho một ví dụ. Nếu tôi ở dòng lệnh và gõ:

cat body.txt | mail -s "just a test" myfriend@hisdomain.com

có thể gửi nó qua máy chủ SMTP bên ngoài, như G-mail không?

Tôi không tìm kiếm "cách gửi thư từ gmail từ dòng lệnh" mà là một tùy chọn để định cấu hình toàn bộ hệ thống để sử dụng một máy chủ SMTP cụ thể hoặc có thể là một tài khoản trên máy chủ SMTP (có thể ghi đè địa chỉ từ địa chỉ) .


Trên thực tế, đó là cách mà hầu hết các máy móc được thiết lập. Bạn có bất kỳ MTA cụ thể trong tâm trí? Nếu không (bao gồm cả MTA là gì? MTA), bạn đang chạy phân phối gì?
Gilles

Tôi đang dùng Ubuntu 10.04, đã tìm thấy bài viết này về việc thiết lập ssmtp, có vẻ như nó có thể hoạt động. bạn có thể nói rõ hơn về cách hầu hết các máy được thiết lập không?
cwd

Câu trả lời:


71

Tôi thấy sSMTP rất đơn giản để sử dụng.

Trong các hệ thống dựa trên Debian:

apt-get install ssmtp

Sau đó chỉnh sửa tệp cấu hình trong /etc/ssmtp/ssmtp.conf

Một cấu hình mẫu để sử dụng gmail của bạn để gửi e-mail:

# root is the person who gets all mail for userids < 1000
root=your@email.com

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

Lưu ý : Đảm bảo lệnh "mail" có trong hệ thống của bạn. gói mailutils sẽ cung cấp gói này trong các hệ thống dựa trên Debian.

Cập nhật : Có những người (và báo cáo lỗi cho các bản phân phối Linux khác nhau) báo cáo rằng sSMTP sẽ không chấp nhận mật khẩu có ký tự 'dấu cách' hoặc '#'. Nếu sSMTP không hoạt động cho bạn, đây có thể là trường hợp.


2
như một lưu ý cho người khác, bạn có thể phải cài đặt ssmtp và sau đó là mailutils. Tôi nghĩ rằng mailutils thiết lập lệnh mail và symlink thành ssmtp để bạn có thể sử dụng mailcú pháp thông thường :)
cwd

1
@cwd Chỉ cần thử nghiệm trên Ubuntu 13.04. Tôi đã không phải cài đặt mailutilsgói (và nó không được cài đặt tự động). ssmtplàm việc ra khỏi hộp.
Pijusn

Tôi vừa mới sử dụng thành công điều này trong Debian trên BeagleBone Black và trước tiên tôi phải cài đặt mailutils.
Dave Nelson

Trên Kubfox 14.04, đã phải cài đặt mailutils sau ssmtp. Tuy nhiên nó đã làm việc ở lần thử đầu tiên.
MariusMatutiae

6
ssmtp KHÔNG xác minh chứng chỉ SSL / TLS của máy chủ từ xa trên các bản phát hành debian, ub Ubuntu và redhat hiện tại và cũng KHÔNG xác minh tên máy chủ của chứng chỉ. Đây là một vấn đề lớn, vì điều này làm cho việc mã hóa trở nên vô dụng một cách hiệu quả và mật khẩu của bạn đang được truyền đi giống như văn bản gốc và bất kỳ ai cũng có thể đánh hơi được nó. ssmtp không có sự phát triển tích cực kể từ ít nhất năm 2009. Vì vậy, nếu bạn quan tâm đến tính bảo mật của tài khoản email bạn sử dụng cho các máy chủ gửi email, đừng sử dụng ssmtp, mà thay vào đó là postfix (unix.stackexchange.com/ a / 118101/72087
Zulakis

23

Đối với postfix :

  • Thêm IP cho chuyển tiếp thư bên ngoài của bạn vào /etc/hostsvà thêm một bí danh mailrelay vào nó.
  • Sửa đổi cấu hình postfix:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • Biên tập /etc/postfix/smtp_auth

    mailrelay login:password
    
  • Chuyển đổi thành định dạng băm

postmap /etc/postfix/smtp_auth

Không cần phải nói rằng chỉ có root mới có thể đọc được ... chmod u=r,og=-


9

mailx hỗ trợ cài đặt máy chủ smtp trên CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v foo@baa.com

Không có gì cần phải cài đặt, miễn là máy chủ smtp của bạn cho phép bạn gửi thư chưa được xác thực.

Không có câu trả lời nào đặt máy chủ smtp cho tất cả các bit phần mềm bạn có thể có trên hộp Linux của mình. Mỗi ứng dụng email có thể cấu hình một máy chủ SMTP.


Hãy chắc chắn để đặt -S var=val trước người nhận của bạn.
Benoit Duffez

Phải làm gì nếu thư không được xác thực không được phép? Tôi nhận được Khách hàng không được xác thực để gửi thư nặc danh trong MAIL,
Mian Asbat Ahmad


7

Yêu thích của tôi là khách hàng email ( github ). Nó thực sự đơn giản, không cần cấu hình phức tạp, không cần phụ thuộc. Và bạn có thể chỉ định đối số máy chủ smtp thông qua dòng lệnh, có nghĩa là nó phù hợp hơn cho kịch bản. Điều đáng tiếc duy nhất là hầu hết các bản phân phối linux không chứa công cụ này, vì vậy bạn cần phải tự biên dịch nó.

Trích dẫn từ email projet trên github

Q: 'email' là gì?

Trả lời: 'email' là chương trình tôi thiết kế sẽ gửi email qua dòng lệnh đến các máy chủ smtp từ xa hoặc sử dụng 'sendmail' trong nội bộ và tương tác đầy đủ với GNUPG để mã hóa và ký email của bạn, vì vậy bạn quyết định làm như vậy. .. Bạn có thể tải GNUPG tại: http://www.gnupg.org

Cảm ơn cygwin đã cho tôi biết ứng dụng email hữu ích này .

Biên dịch và cài đặt

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

Tùy chọn dòng lệnh của email

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

Sử dụng mẫu

Thư đơn giản với máy chủ SMTP được chỉ định

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr liuyan@domain.com -smtp-server smtp.domain.com -smtp-port 25 cwd@your-domain.com your-friends@his-domain.com

Thư HTML

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" cwd@your-domain.com

Tài liệu đính kèm

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach cwd@your-domain.com

2

Thiết lập một máy chủ exim SMTP cục bộ bằng cách làm theo các hướng dẫn trên này trang, nhưng chọn "thư được gửi bởi smarthost; không có thư cục" tùy chọn từ đầu màn hình của cấu hình Exim. Điều này sẽ thiết lập một máy chủ SMTP trên hộp của bạn có thể nhận thư từ các lệnh "mail" hoặc "mailx" và sẽ chuyển tiếp tất cả thư đến smarthost (máy chủ Gmail trong trường hợp của bạn) để gửi.

Để gửi email đi qua máy chủ Gmail, bạn sẽ cần thiết lập hỗ trợ TLS cho Exim , đây không phải là chuyện nhỏ. Howto này đưa ra một số lời giải thích và đây là một liên kết với lời giải thích cụ thể hơn về Gmail. Bạn nên cho phép bản thân vài giờ để làm việc này. Tôi sẽ đề nghị bắt đầu bằng cách gửi email từ hộp của bạn đến máy chủ SMTP được bật TLS mà bạn có quyền truy cập root để bạn có thể gỡ lỗi cấu hình Exim TLS của mình từ cả hai phía trước khi thử gửi qua máy chủ Gmail. Vì giao tiếp được mã hóa, bạn sẽ không thể sử dụng các công cụ như tcpdump để phân tích giao thức trên đường truyền.


1

Nếu bạn có kết nối máy chủ smtp bên ngoài với máy chủ của mình thì bạn có thể định cấu hình smtp trên máy chủ của mình và gửi email.

Cấu hình Smtp trong các bước linux có thể được tìm thấy ở đây: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Ví dụ về email comand có thể được tìm thấy ở đây: http://kerneltalks.com/commands/examples-send-email-ENC-terminal/


Câu trả lời nên bao gồm đủ chi tiết để tự đứng. Có các liên kết với thông tin toàn diện hơn là tốt, nhưng ít nhất một phần của tài liệu được liên kết nên được trích dẫn trong câu trả lời để nó có thể hữu ích sau khi quay vòng liên kết trong.
user4556274
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.