Làm cách nào để gửi email với máy chủ CentOS của tôi?


21

Tôi vừa xây dựng một máy chủ gia đình khiêm tốn bằng CentOS 5.5. Tôi muốn máy chủ có thể gửi email đến tài khoản Gmail của tôi hoặc các tài khoản email khác cho nhiều việc khác nhau như công việc định kỳ. Ngoài ra, thật tuyệt khi có thể gửi email thông qua các ứng dụng PHP mà tôi chạy / phát triển trên máy chủ. Hoặc thậm chí có thể cho máy chủ gửi email thông qua lệnh mail.

Tôi biết có một triệu kết quả tìm kiếm của Google về việc thiết lập máy chủ Linux của bạn làm máy chủ email hoặc định cấu hình sendmail, v.v. Nhưng dường như chúng không phải là thứ tôi đang tìm kiếm ... ít nhất là tôi không nghĩ vậy. Tôi không cố thiết lập một số máy chủ công ty mà các máy khách khác có thể kết nối để gửi email hoặc bất cứ thứ gì phức tạp như thế.

Tôi chỉ muốn máy chủ của tôi gửi cho tôi email về công cụ. Có vẻ như nó đơn giản ... Có ai có thể chỉ cho tôi đi đúng hướng không?

CẬP NHẬT

Theo yêu cầu của người dùng bên dưới, tôi đã thử lệnh này:

/bin/mail -s "My Subject" "myaddress@gmail.com" < /home/john/test

Không có lỗi hay bất cứ điều gì. Nhưng email không bao giờ xuất hiện trong hộp thư đến của tôi. Đây làmaillog

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<root@localhost.localdomain>, size=11209, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: to=myaddress@gmail.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=40906, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o9R6qJOd013703 Message accepted for delivery)

Bất kì manh mối nào?


1
Bạn đã thử chưa Những loại vấn đề bạn đang nhìn thấy?
Ignacio Vazquez-Abrams

Tôi không chắc chắn những gì tôi đang tìm kiếm. Tôi tìm kiếm Google và xem hướng dẫn để thiết lập Máy chủ Thư Linux. Đó là những gì tôi muốn?
Jake Wilson

Chỉ cần nhận thấy điều này vẫn chưa được trả lời. Vì tò mò, bạn đã tìm ra nó chưa? Bạn đã kiểm tra xem máy có được liệt kê trên PBL không? spamhaus.org/pbl
Belmin Fernandez

Tôi đã không làm cho nó hoạt động. Tôi chưa trải qua quá trình cài đặt sendmail, bởi vì các áp phích dưới đây ngụ ý rằng không nên yêu cầu chỉ cần gửi một email. Tôi không thể tưởng tượng máy chủ nhỏ bé của tôi được liệt kê trong danh sách thư rác vì tôi thậm chí chưa bao giờ gửi email từ đó.
Jake Wilson

Tôi thậm chí đã thử lệnh đơn giản mà tôi đã liệt kê ở trên gửi đến tài khoản email 10minutemail.com với cùng kết quả và cùng một thông điệp tường trình
Jake Wilson

Câu trả lời:


13

/bin/mail -s "Enter Subject Line here" -a /home/.../whateverFileYouWantAttached "you@YourEmailAddress" < /home/me/textBody.letter

thử lệnh trên :)


1
+1 Bạn không cần máy chủ thư trên hệ thống để gửi thư, giống như bạn không cần máy chủ thư trên máy tính để bàn để gửi thư. Các chương trình thư là tốt.
dunxd

1
Tôi đã thử lệnh này và nó không hoạt động. Không có lỗi hay bất cứ điều gì. Chỉ không có thư hiển thị trong hộp thư gmail của tôi. Nhìn phía trên những gì maillog của tôi nói
Jake Wilson

Vậy ... lý do nào khiến việc này không hiệu quả với tôi? Tôi nên xem nhật ký nào để xác định lý do tại sao tôi không nhận được bất kỳ thư nào?
Jake Wilson

6

Câu trả lời đơn giản:

Thiết lập sendmail . Nó sẽ phụ thuộc vào phân phối của bạn nhưng điều này không khó chút nào. Nếu bạn có bất kỳ câu hỏi cụ thể, hãy hỏi đi.

Câu trả lời phức tạp:

Nếu bạn đang hỏi điều này, có lẽ bạn không nên nhảy súng và thiết lập sendmail justtt .

Bạn sẽ cần cân nhắc một vài điều:

  1. ISP của bạn có cho phép bạn gửi e-mail không? Bạn có thể ở trong phạm vi IP không phải của máy chủ và do đó, nhiều nhà cung cấp e-mail sẽ chặn hoàn toàn bạn.

  2. Địa chỉ nào bạn sẽ sử dụng làm địa chỉ của bạn? Bạn có được phép gửi từ địa chỉ này (SPF, DomainKeys, v.v.) không? Nếu không, tin nhắn của bạn có thể bị các nhà cung cấp e-mail phát hiện là thư rác --- và đúng như vậy.

  3. Cuối cùng, nhưng chắc chắn không kém phần quan trọng: Bạn có thực sự cần sử dụng dịch vụ SMTP của riêng mình không? Bất kỳ lý do tại sao sử dụng ISP của bạn là không đủ tốt?

Trước đây, việc thiết lập một máy chủ SMTP không phải là vấn đề lớn. Ngày nay, việc thiết lập có thể dễ dàng hơn nhưng thiết lập nó để nó thực sự nhận được tin nhắn đến hộp thư của mọi người , là một thách thức.


3

Tôi có thể xác nhận rằng không có bất kỳ đề xuất nào ở trên đang hoạt động trên hệ thống CentOS của tôi ở nhà - không phải là một đề xuất duy nhất. Thật là khó chịu!

Sau đó, tôi đã thử tương tự trên một phiên bản Amazon mới chạy CentOS 6.4 và ngay cả với cấu hình mặc định, tôi có thể gửi thư mà không gặp vấn đề gì. Tất cả tôi phải làm là

yum install mailx

sau đó gửi thư như mô tả ở trên hoạt động như một lá bùa. Cài đặt các biến chứng như sendmail là KHÔNG cần thiết cho những gì Jakub đang cố gắng thực hiện.

Nó phải là một số cấu hình với ISP của tôi, vì tôi không có tường lửa cấu hình ở cuối của tôi ở đây.


2

Bạn cần làm như sau:

  1. sudo yum install postfix telnet mailx
  2. sudo /etc/init.d/postfix start
  3. sudo vi /etc/postfix/main.cf
  4. Thay đổi mydestination = mydomain.com, localhost.mydomain.com, localhost

    đến

    mydestination = localhost.mydomain.com, localhost

Kiểm tra bằng cách sử dụng sau đây từ dòng lệnh

  1. mail address@example.com Tiêu đề:
  2. Kiểm tra email từ demoslice.com Kiểm tra
  3. cơ thể của email.
  4. .

Số 4 - chỉ có một điểm dừng đầy đủ để hoàn thành phần thân của email. Bây giờ bạn nên có thư.

Ở trên sẽ giúp bạn có một MTA (Đại lý chuyển thư) đang hoạt động. Có thể tìm thấy một số tài nguyên giúp bạn thiết lập nâng cao hơn tại các bài viết của lát lưu trữ về thiết lập email cho CentOS (cuộn xuống phần CentOS và Email). Bạn thực sự nên xem xét việc thiết lập chính xác các thông tin sau: tên máy chủ lưu trữ, RDNS (Reverse DNS) và bản ghi SPF (Khung chính sách người gửi) với nhà cung cấp DNS của bạn.


Đây là một câu trả lời tuyệt vời - ngắn và hoạt động.
monkjack

1

Bạn đã sửa đổi /etc/mail.rc để đặt địa chỉ smtp chưa?


1
Nội dung của /etc/mail.rcset ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path Viabạn đang gợi ý tôi làm gì?
Jake Wilson

0

Hãy thử cài đặt postfix và đặt mydestination trong tệp cấu hình ngay cả khi nó hoạt động với sendmail.


0

Postfix đang đi đúng hướng, nhưng trừ khi gmail nghĩ rằng bạn ít nhất là hợp pháp từ xa (ví dụ: Bạn không phải là người gửi thư rác) thì việc gửi thư của bạn rất khó xảy ra.

Quá trình này có một chút liên quan để đăng ở đây, nhưng cách đơn giản nhất mà tôi đã tìm thấy để đạt được điều này (và gửi thư của bạn) là thiết lập postfix như một chuyển tiếp, sử dụng tài khoản gmail của riêng bạn làm phương tiện vận chuyển.

Quá trình tôi sử dụng được chi tiết ở đây:

http://rs20.mine.nu/w/2011/07/gmail-as-relay-host-in-postfix/

Không cần thiết lập certs tự ký là cần thiết (theo sendmail) và theo kinh nghiệm của tôi, nó chỉ hoạt động!


0

Giải pháp dễ dàng không phải là sendmail, mà là sendEmail:

http://caspian.dotconf.net/menu/Software/SendEmail/#d Download

Một tập lệnh perl có thể dễ dàng được cấu hình để gửi qua bất kỳ máy chủ SMTP nào bạn có thể đến - Tôi sử dụng nó để gửi qua tài khoản Gmail mọi lúc, nhưng nó cũng hoạt động cho SMTP thông thường qua TCP trên cổng 25, v.v.

Tôi thường bọc tập lệnh sendEmail perl bằng tập lệnh shell của riêng tôi cho Gmail:

#!/bin/bash

# Send gmail through an account specified in ~/.sendGmailAuthFile (or file identified with -k.)
# The auth file must have values for the -f (from@domain) and -xp (password) options of sendEmail,
# structured as:
#
#    user=me.surnamen@gmail.com
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "test@whatever.com" < message.txt

function sendGmailImmed {
        local authFile="$HOME/.sendGmailAuthFile"
        for arg in "$@"; do
                if [[ "$arg" == "-k" ]]; then
                        shift
                        authFile="$1"
                        shift
                fi
        done
        initAuthFile $authFile
        source $authFile

        sendEmail -f $user -xu $user -xp $pwd -s smtp.gmail.com:587 -o tls=yes "$@"
}

function initAuthFile {
        # If the authfile doesn't exist, we'll create a dummy:
        if [[ ! -f $1 ]]; then
                echo "# sendGmail authentication file: " > $1
                echo "user=my.name@gmail.com" >> $1
                echo "pwd=my-password" >> $1
                echo "A shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
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.