Làm cách nào để định cấu hình sendmail để gửi thư qua bản ghi MX và không gửi tới localhost?


8

Tôi đang cố gắng gửi sendmail để chuyển thư đến các máy chủ được chỉ định trong bản ghi MX vì vậy khi máy chủ gửi email đến me@domain.com tôi muốn nó bỏ qua localhost và chuyển thẳng đến gmail.

Tôi đã xem qua các tài liệu sendmail, nhưng không hiểu làm thế nào để giải thích cho tình huống của tôi. Về cơ bản, tên máy chủ của máy chủ của tôi là 'www.domain.com' nhưng khi tôi gửi email đến 'me@domain.com' thì nó sẽ xuất hiện trong hộp thư địa phương.

Khi tôi chạy sendmail ở chế độ gỡ lỗi:

sendmail -bt
> $=w

Tôi có:

www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___] 

Vì vậy, nó đang chặn tất cả các thư gửi đi domain.com. Tôi không muốn nó đến localhost. Tôi muốn nó đi đến máy chủ gmail.

Tất cả các thư ràng buộc cho các địa chỉ khác hoạt động tốt. Tôi cũng đã cấu hình sendmail để sử dụng DKIM.

Tôi đã thêm một bản ghi vào mailertable (và xây dựng lại mailertable.db và biên dịch lại tệp mc> cf) nhưng tôi không chắc đó là những gì tôi cần làm hay nếu tôi đang làm đúng.

domain.com esmtp:[aspmx.l.google.com]

Làm cách nào để tôi có được nó để cho phép thư bị ràng buộc cho users@domain.com rời khỏi máy chủ?

THÔNG TIN BỔ SUNG: Đây là tập tin sendmail.mc của tôi:

divert(-1)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl

define(`confDEF_USER_ID', ``8:12'')dnl

define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl

define(`confTO_IDENT', `0')dnl

FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl

FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`relay_based_on_MX')dnl
FEATURE(`relay_entire_domain')dnl

LOCAL_DOMAIN(`localhost.localdomain')dnl

MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl

EXPOSED_USER(`root')dnl

FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')

MAILER(smtp)dnl
MAILER(procmail)dnl

1
Logic câu hỏi của bạn là hoàn toàn thiếu sót. Nó hiểu rõ "Tôi không muốn sử dụng Sendmail để gửi thư. Làm cách nào để cấu hình lại Sendmail với cấu hình bổ sung để gửi thư chính xác cách Sendmail gửi thư theo mặc định?" Trả lời: để nó yên Câu hỏi của bạn cần phải được diễn đạt lại hoàn toàn để vượt qua những gì bạn thực sự đang cố gắng hoặc bạn cần ngừng can thiệp vào cấu hình máy chủ của mình và để nó làm những gì nó làm mà không làm hỏng nó.
Sammitch

1
được thôi. cách khác, giải thích cho tôi những gì tôi sẽ làm nếu tôi chỉ muốn gửi email từ máy chủ và không gửi nó.
Bạch tuộc

Câu trả lời:


8

Cuối cùng tôi đã tìm thấy một giải pháp khá toàn diện ở đây . Tóm lại, có một số tùy chọn (hầu hết trong số đó đã được đề cập trong các câu trả lời khác, nhưng vì bất kỳ lý do gì không hoạt động trong kịch bản cụ thể của tôi).

Tùy chọn 1: xóa mục nhập khỏi / etc / mail / local-host-name

Đối với tôi tập tin này đã trống

Tùy chọn 2: xóa mọi mục nhập LOCAL_DOMAIN trong tệp mc

tôi không có ai

Tùy chọn 3: yêu cầu sendmail không thăm dò giao diện

define(`confDONT_PROBE_INTERFACES', `true')dnl

trong trường hợp của tôi, điều này đã được đặt, nhưng máy chủ có vấn đề vẫn có mặt trong lớp w của sendmail

Tùy chọn 4: đổi tên máy chủ. liên kết bên ngoài được cung cấp ở trên thậm chí còn nói cụ thể, "Nếu tôi muốn xóa whíp.org khỏi lớp w, tôi có thể đổi tên máy chủ thành frodo.whipple.org, www.whipple.org, elvis.whipple.org, chẳng hạn."

Đối với tôi điều này là không đủ. với máy chủ có tên www.domain.com , lớp sendmails vẫn chứa BOTH www.domain.com AND domain.com (ngay cả sau khi khởi động lại)

Tùy chọn 5: ĐÂY LÀ CÁI GÌ ĐÃ LÀM VIỆC CHO TÔI, hãy thêm LOCAL_RULE_0 vào tệp mc sendmail

LOCAL_RULESETS
LOCAL_RULE_0
R$* < @domain.com. > $*  <tab>$#esmtp $@ mail.domain.com $: $1<@domain.com.>$2

cái này cần phải đi đến cuối tập tin và <tab>cần phải là một ký tự tab thực tế


Tôi sẽ đi với tùy chọn 5 và sử dụng bestmxbản đồ để biến nó thành chung chung.
adamo

Điều này hoạt động hoàn hảo. Cảm ơn Bạch tuộc LOCAL_RULESETS LOCAL_RULE_0 R $ * <@ domain.com. > $ * <tab> $ # esmtp $ @ mail.domain.com $: $ 1 <@ domain.com.> $ 2 điều này cần phải đi vào cuối tệp và <tab> thực sự bạn phải sử dụng phím tab thay vì mật mã.
Vinodh Kumar 2/2/2015

7

Thay đổi tên máy chủ của máy chủ. Không có lý do hợp lệ nào để tên máy chủ không bao giờ bằng tên miền trần.


vâng, tôi đã thử điều đó, ngay cả khi tôi đặt tên máy chủ thành www.domain.com sendmail muốn giữ mọi thứ bị ràng buộc cho www.domain.com, domain.com và localhost. tôi có thể thấy rằng khi tôi chạy sendmail ở chế độ gỡ lỗi và gõ $ = w. tôi sắp xếp lại câu hỏi nhẹ để giải thích.
Bạch tuộc

3

Đây là sự hiểu biết của tôi về câu hỏi của bạn:

  1. Bạn đã cài đặt Sendmail để bạn có thể sử dụng nó để gửi email từ trang web của mình.

  2. Bạn đã cấu hình Sendmail để trở thành máy chủ email có thẩm quyền cho không gian tên DNS công cộng của bạn.

  3. Bạn không muốn Sendmail có thẩm quyền cho không gian tên DNS công cộng của bạn. Bạn muốn email được gửi đến không gian tên DNS công cộng của bạn được gửi đến email được lưu trữ trên Google của bạn.

Giải pháp: cấu hình lại Sendmail để nó không có thẩm quyền cho không gian tên DNS công cộng của bạn.


2
Câu hỏi của tôi là về cấu hình sendmail. Câu trả lời của bạn có thể cụ thể hơn "cấu hình lại sendmail" không?
Bạch tuộc

0

Tôi không quá có kinh nghiệm với cấu hình sendmail, nhưng tôi cảm thấy nó nên làm đúng với các bản ghi MX. Tuy nhiên, tôi tưởng tượng rằng có thể trong ưu tiên tra cứu DNS, sendmail trước tiên là tư vấn tệp máy chủ cục bộ /etc/hoststrên hầu hết các hệ điều hành dựa trên unix trước khi sử dụng máy chủ DNS. Nếu đó là trường hợp và có một mục trong tệp máy chủ đề cập đến máy của bạn là domain.com nếu bạn đặt tên đó là tên máy chủ, đó có thể là những gì đang diễn ra. Bạn có thể chỉnh sửa tệp máy chủ cho phù hợp với nhu cầu của mình trong trường hợp cụ thể này bằng cách sửa đổi các mục nhập hoặc thêm mục mới.

Hoặc bạn có thể định cấu hình sendmail để bỏ qua tệp lưu trữ hệ thống cục bộ khi giải quyết các url. Tôi không chắc làm thế nào để làm điều đó.


0

1) Sendmail tự động điền vào danh sách các tên miền email cục bộ ( $=w).

Bạn không thể tắt nó bằng cách sử dụng dòng sau trong sendmail.mc của bạn:

define(`confDONT_PROBE_INTERFACES',`True')

Bạn có thể thêm email cục bộ "thủ công" trong /etc/mail/local-host-namestệp.
(Nó yêu cầu HUPing hoặc khởi động lại daemon sendmail sau)

2) Sendmail có thể thêm (tự động cấu hình) "tên email máy chủ này" ( $j) vào danh sách các tên miền email cục bộ.

Bạn có thể định nghĩa "tên email máy chủ này"

define(`confDOMAIN_NAME',`hostname.example.net')

3) mailertableKHÔNG consultede cho việc giao hàng đến lĩnh vực được liệt kê trong $=w.


nhưng xác định ( confDONT_PROBE_INTERFACES',Đúng ') đã được bật (và luôn luôn được bật)
Bạch tuộc

Vì vậy, trường hợp của bạn có thể được bảo vệ bởi tùy chọn 2.
AnFi

Đây đều là những gợi ý hay mà Ive đã khám phá đầy đủ, nhưng tôi tin rằng tùy chọn 2 cũng giống như thêm máy chủ vào tệp tên máy chủ cục bộ. trong trường hợp này tôi muốn LOẠI TRỪ một máy chủ không bao gồm một máy chủ.
Bạch tuộc

0

Mã đang gửi thư, bạn đang sử dụng một địa chỉ email đầy đủ hay bạn chỉ cần máy chủ gửi nó qua tài khoản cục bộ? Bởi vì:

Điều này nói với sendmail để gửi tất cả thư đến users@localhost.localdomain tại địa phương

LOCAL_DOMAIN(`localhost.localdomain')dnl

Và điều này đang nói với sendmail để viết lại các tên miền trong địa chỉ cục bộ thành domain.com, nhưng không làm thay đổi việc phân phối cục bộ .

MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl

được thôi. cách khác, giải thích cho tôi những gì tôi sẽ làm nếu tôi chỉ muốn gửi email từ máy chủ và không gửi nó.

Bước 1: Quay trở lại cấu hình mặc định.
Bước 2: Sử dụng cấu hình mặc định.


Đúng, nhưng tôi đang gửi tới user@domain.com. Cấu hình mặc định có cùng các vấn đề giống như tôi đã nêu trong câu hỏi.
Bạch tuộc
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.