Làm cách nào để Postfix sử dụng địa chỉ IP khác?


21

Tôi đang sử dụng máy chủ thư Postfix và tôi có sẵn 6 IP. Tôi muốn sử dụng một IP khác cho máy chủ thư Postfix để gửi thư hơn so với máy chủ web sử dụng.

Tôi có thể làm cái này như thế nào? Phiên bản hậu tố của tôi là 2.3.3.

Ví dụ: IP chính: 66.66.66.66 IP khác: 66.66.66.67

Câu trả lời:


25

Bạn muốn smtp_bind_address=66.66.66.67inet_interfaces=allhoặc inet_interfaces=eth(whatever)66.66.66.67 được bật.

Thực hiện thay đổi đó, sau đó dừng / bắt đầu postfix. Bạn không thể tải lại nếu bạn thay đổiinet_interfaces


Tôi đã thử tùy chọn smtp_bind_address nhưng sau đó máy chủ thư của tôi không gửi thư nữa. Và tôi không nghĩ inet_interfaces phải được thay đổi vì tôi không muốn nhận thư trên máy chủ đó. Lưu ý, IP này chỉ được sử dụng để gửi thư.
EarthMind

Vui lòng gửi của bạn postconf -nđể chúng tôi có thể thấy những gì bạn đang nói về. Ẩn danh IP thành IP riêng (10.xxx, v.v.) và tên miền làm ví dụ. (Com | net | org | anything) nếu bạn cảm thấy cần.
Bill Weiss

2
smtp_bind_address là cách đúng đắn và tôi đã bị chậm trễ trong việc gửi email vì IP mới tôi đang sử dụng không có bản ghi rDNS. Xin chân thành cảm ơn sự giúp đỡ của bạn.
EarthMind

3
smtp_bind_addressđặt địa chỉ IPv4, tương đương IPv6 làsmtp_bind_address6
Paul Tobias

16

Nếu bạn sử dụng giải pháp "smtp_bind_address" thì máy chủ thư của bạn cũng sẽ chỉ nghe trên địa chỉ IP được chỉ định đó cho thư đến. Điều tương tự cũng áp dụng cho giải pháp "inet_interfaces". Đây có thể không phải là giải pháp mong muốn nếu bạn muốn nghe thư đến trên nhiều địa chỉ / giao diện IP.

Giải pháp của tôi tốt hơn, vì tôi khuyên bạn không nên thay đổi cài đặt "smtp_bind_address" và "inet_interfaces" mặc định, vì vậy máy chủ thư của bạn sẽ vẫn nghe thư đến trên tất cả các địa chỉ IP.

Chỉ cần thực hiện một thay đổi nhỏ trong tệp /etc/postfix/master.cf của bạn.

Thay đổi phần này:

smtp unix - - - - - smtp
# Khi chuyển tiếp thư dưới dạng MX dự phòng, hãy tắt fallback_relay để tránh các vòng lặp MX
chuyển tiếp unix - - - - - smtp
        -o smtp_fallback_relay =

đến đây:

smtp unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
# Khi chuyển tiếp thư dưới dạng MX dự phòng, hãy tắt fallback_relay để tránh các vòng lặp MX
chuyển tiếp unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
        -o smtp_fallback_relay =

Tất nhiên, thay vì 192.168.0.1, bạn phải sử dụng một trong các địa chỉ IP của mình, địa chỉ bạn muốn gửi thư từ đó.

Zoltan


Tôi nghĩ rằng tại thời điểm đó tôi muốn máy chủ thư chỉ nghe một địa chỉ IP, cho cả email đến và đi. Nhưng không bao giờ, tôi đánh giá cao thông tin thêm. Cảm ơn.
EarthMind

1
cái này có hoạt động với ipv6 không? Nếu vậy, tôi có thể bao gồm hai địa chỉ và liên kết với một trong hai địa chỉ không? Với giải pháp này, tôi vẫn nhận được thư gửi qua ipv6 chứ không phải địa chỉ ipv4 mà tôi đã chỉ định
billynoah

Tôi đã thêm -o smtp_bind_address6=1:2:3:4:5:6:7:8và dường như làm việc.
billynoah

1
Điều này không chính xác. Đó khả năng để làm cho postfix nghe trên nhiều giao diện bằng cách thêm tất cả trong số họ để inet_interfaces- hoặc chỉ đặt nó vào all(mặc định) cấu hình smtp_bind_address. Sau đó, một địa chỉ được chỉ định qua smtp_bind_address (hoặc smtp_bind_address6) được sử dụng độc lập cho quá trình gửi smtp Postfix.
maxschlepzig

Tôi đã thêm -o smtp_bind_address vào master.cf của tôi và nó không hoạt động. Tôi đã sử dụng nó trong main.cf và nó đã hoạt động.
Areeb Soo Yasir

10

thạc sĩ

Tạo giao diện khác nhau. Một cho mỗi tên miền:

rotate1  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate1
          -o smtp_helo_name=domainone.com.br
          -o smtp_bind_address=173.111.111.1

rotate2  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate2
          -o smtp_helo_name=domaintwo.com.br
          -o smtp_bind_address=173.111.111.2

main.cf

  1. Vô hiệu hóa tất cả các bản đồ vận chuyển khác, tức là: # Transport_maps = xxxxx

  2. Cho phép bản đồ vận chuyển phụ thuộc (yêu cầu postfix 2.7.x trở lên)

sender_deperee_default_transport_maps = mysql: /etc/postfix/config/transport_random_deperee.cf

Transport_random_deperee.cf

Thí dụ:

user = postfix
password = mypassword
dbname = postfixdb
hosts = localhost
query = SELECT transport FROM transport_random WHERE domain = '%d' AND status='1' ORDER BY RAND() LIMIT 1

Bảng vận chuyển_random

Column "transport" = rotate1, rotate2, rotate3, rotate4 (etc)
Column "domain" = sender domains (replaced by %d)
Column "status" = boolean (0 or 1) if is enabled the transport.

Hướng dẫn "RAND () GIỚI HẠN 1" chỉ cần thiết nếu bạn muốn sử dụng vận chuyển ngẫu nhiên cho cùng một tên miền.

Ví dụ: bạn muốn gửi từ mydomain.com từ 3 IP khác nhau.

Sau đó, bạn tạo 3 lần vận chuyển (rotation1, rotation2 và rotation3) với 3 IP khác nhau, sau đó đặt ở các dòng mysql:

transport = rotate1 | domain = mydomain.com
transport = rotate2 | domain = mydomain.com
transport = rotate3 | domain = mydomain.com

Sau đó, khi postfix sẽ ngẫu nhiên ba lần vận chuyển khác nhau (xoay một đến ba) để gửi email này.


3

Chỉnh sửa /etc/postfix/main.cf và đảm bảo rằng dòng sau có mặt

inet_interfaces = 66.66.66.67, localhost

Sau đó chạy "tải lại hậu tố"


2
Điều này chỉ đặt địa chỉ IP để nghe các kết nối SMTP chứ không phải địa chỉ IP được sử dụng để gửi thư đi.
ub3rst4r
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.