Bagaimana membuat Postfix menggunakan alamat IP lain?

21

Saya menggunakan server surat Postfix dan saya memiliki 6 IP yang tersedia. Saya ingin menggunakan IP lain untuk server surat Postfix untuk mengirim surat daripada yang digunakan server web.

Bagaimana saya bisa melakukan ini? Versi postfix saya adalah 2.3.3.

Misalnya: IP utama: 66.66.66.66 IP lainnya: 66.66.66.67

EarthMind
sumber

Jawaban:

25

Anda ingin smtp_bind_address=66.66.66.67dan inet_interfaces=allatau inet_interfaces=eth(whatever)66.66.66.67 aktif.

Lakukan perubahan itu, lalu hentikan / mulai postfix. Anda tidak bisa hanya memuat ulang jika Anda berubahinet_interfaces

Bill Weiss
sumber
Saya sudah mencoba opsi smtp_bind_address tetapi kemudian server email saya tidak mengirim email lagi. Dan saya tidak berpikir inet_interfaces harus diubah karena saya tidak ingin menerima email di server itu. Catatan, IP ini hanya digunakan untuk mengirim email.
EarthMind
Silakan posting Anda postconf -nsehingga kami dapat melihat apa yang Anda bicarakan. Anonimkan IP sebagai IP pribadi (10.xxx, dll) dan domain sebagai contoh. (Com | net | org | apa pun) jika Anda merasa perlu.
Bill Weiss
2
smtp_bind_address adalah cara yang benar dan saya hanya mengalami keterlambatan pengiriman email karena IP baru yang saya gunakan tidak memiliki catatan rDNS. Terima kasih atas bantuan Anda.
EarthMind
3
smtp_bind_addressmenetapkan alamat IPv4, padanan IPv6 adalahsmtp_bind_address6
Paul Tobias
16

Jika Anda menggunakan solusi "smtp_bind_address" maka server email Anda hanya akan mendengarkan alamat IP yang ditentukan untuk surat masuk juga. Hal yang sama berlaku untuk solusi "inet_interfaces". Ini mungkin bukan solusi yang diinginkan jika Anda ingin mendengarkan surat masuk pada beberapa alamat IP / antarmuka.

Solusi saya lebih baik, karena saya sarankan untuk tidak mengubah pengaturan "smtp_bind_address" dan "inet_interfaces" default, sehingga server email Anda akan tetap mendengarkan email masuk di semua alamat IP.

Hanya perlu melakukan perubahan kecil pada file /etc/postfix/master.cf Anda.

Ubah bagian ini:

smtp unix - - - - - smtp
# Saat menyampaikan email sebagai MX cadangan, nonaktifkan fallback_relay untuk menghindari loop MX
relay unix - - - - - smtp
        -o smtp_fallback_relay =

untuk ini:

smtp unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
# Saat menyampaikan email sebagai MX cadangan, nonaktifkan fallback_relay untuk menghindari loop MX
relay unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
        -o smtp_fallback_relay =

Tentu saja, alih-alih 192.168.0.1 Anda harus menggunakan salah satu alamat IP Anda, yang ingin Anda kirimi surat.

Zoltan

Zoltan
sumber
Saya pikir pada saat itu saya ingin server mail hanya mendengarkan satu alamat IP, untuk email masuk dan keluar. Tapi bagaimanapun, saya menghargai info tambahan. Terima kasih.
EarthMind
1
apakah ini akan bekerja dengan ipv6? Jika demikian, dapatkah saya memasukkan dua alamat dan mengikat ke masing-masing alamat? Dengan solusi ini saya masih mendapatkan surat keluar melalui ipv6 dan bukan alamat ipv4 yang telah saya tentukan
billynoah
Saya menambahkan -o smtp_bind_address6=1:2:3:4:5:6:7:8dan tampaknya berhasil.
billynoah
1
Ini tidak akurat. Hal ini dimungkinkan untuk membuat postfix mendengarkan pada beberapa interface via menambahkan semua dari mereka untuk inet_interfaces- atau hanya pengaturan ke all(default) dan mengkonfigurasi smtp_bind_address. Satu alamat yang ditentukan melalui smtp_bind_address (atau smtp_bind_address6) kemudian digunakan secara independen untuk proses pengiriman smtp Postfix.
maxschlepzig
Saya menambahkan -o smtp_bind_address ke master.cf saya dan tidak berhasil. Saya menggunakannya di main.cf dan berhasil.
Areeb Soo Yasir
10

master.cf

Buat Antarmuka yang berbeda. Satu untuk setiap domain:

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. Nonaktifkan semua peta transportasi lain, yaitu: # transport_maps = xxxxx

  2. Aktifkan peta transpor dependen (memerlukan postfix 2.7.x atau yang lebih baru)

sender_dependent_default_transport_maps = mysql: /etc/postfix/config/transport_random_dependent.cf

transport_random_dependent.cf

Contoh:

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

Tabel transport_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.

Instruksi "RAND () LIMIT 1" diperlukan hanya jika Anda ingin menggunakan transpor acak untuk domain yang sama.

Misalnya, Anda ingin mengirim dari mydomain.com dari 3 IP yang berbeda.

Kemudian, Anda membuat 3 transport (rotate1, rotate2 dan rotate3) dengan 3 IP yang berbeda, kemudian atur di baris mysql:

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

Kemudian, ketika postfix akan mengacak tiga transport yang berbeda (rotasikan satu ke tiga) untuk mengirim email ini.

Ramiro
sumber
3

Edit /etc/postfix/main.cf dan pastikan baris berikut ada

inet_interfaces = 66.66.66.67, localhost

Kemudian jalankan "postfix reload"

Matt Simmons
sumber
2
Ini hanya mengatur alamat IP untuk didengarkan untuk koneksi SMTP, dan bukan alamat IP yang akan digunakan untuk mengirim surat keluar.
ub3rst4r