Examples of software that is used successfully with Postfix:
Contoh dari beberapa perangkat lunak yang bisa dijalankan
secara sukses dengan Postfix
Postfix mempunyai konfigurasi normal pada semua parameter, jadi tulisan dibawah ini hanya menunjukkan
yang bisa diubah. Secara normal, Postfix hanya akan merelay email dari klien - klien didalam subnetwork dia sendiri.
File master.cf (seperti halnya inetd.conf) hanya perlu tweaking jika anda berada dalam
lingkungan atau komputer yang lambat atau cepat
Workstation:
Server:
Didalam linkungan seperti ini, antara direktori mail spool yang di shared melalui NFS,
klien - klien dapat mengakses mailbox mereka melalui POP, atau setiap klien menerima
email pada komputer mereka sendiri. Dalam kasus berikutnya, setiap klien mempunyai alias pada server
agar server dapat mengirimkan email pada workstation yang bersangkutan:
Server:
Dalam beberapa sistem, database dari alias tidak terdapat pada /etc/aliases.
Untuk mengetahui dimanakah lokasi alias pada sistem anda, ketikan perintah
postconf alias_maps.
Pada contoh berikut ini, sebuah email akan dikirim sebagai user@domain, dan semua email akan diteruskan
ke mail server yang bertanggung jawab untuk domain lokal.
Karena semuanya mengirimkan email sebagai user@domain, maka tidak ada email
yang dikirimkan sebagai user@nullclient, maka dari itu kita tidak memerlukan
konfigurasi khusus pada mail server untuk email yang dialamatkan kepada user@nullclient.
Hal ini di umpamakan bahwa perusahaan anda telah mengkonfigurasi MX records
untuk domain lokal.
Jika intranet anda tidak menggunakan MX records dalam jaringan lokal,
anda harus memperjelas host dari intranet mail gateway secara manual:
Jika intranet anda tidak menggunakan DNS lokal, anda harus menon-aktifkan juga
DNS lookups :
Deklarasikan informasi default routing untuk domain internal di dalam
Specify default routing information for the internal domain in the
transport tabel, dan aktifkan transport lookups tabel.
Penting: jangan mendeklarasi relayhost didalam main.cf, jika tidak maka email
yang ditujukan pada jaringan lokal akan selalu diteruskan kepada relayhost.
Jika sistem Anda tidak menggunakan file db melainkan menggunakan file dbm maka deklarasikan dbm
bukan hash. Untuk mengetahui tipe map yang didukung oleh Postfix, ketiklah perintah postconf -m pada konsole.
Jalankan perintah postmap /etc/postfix/transport bilamana anda
merubah transport table.
Bagaimana cara mengkonfigurasi Postfix pada komputer
firewall sehingga bisa merelay email untuk domain.com ke sebuah
komputer gateway dalam 1 network, sehingga hal tersebut menolak
email untuk *.domain.com? Masalah ini terjadi karena
konfigurasi standar dari relay_domains
mail relaying restriction membolehkan email dikirim ke *.domain.com
ketika anda mendeklarasikan domain.com.
Deklarasikan setting eksplisit untuk smtpd_recipient_restrictions
dan untuk mynetworks agar membolehkan
sistem lokal untuk mengirim email kemanapun, dan juga membolehkan remote systems
hanya mengirim email untuk user@domain.com.
Deklarasikan recipients. (sehingga antrian tidak terisi dengan
undeliverable mail dari spammer - spammer).
Deklarasikan local_recipient_maps = jika kesusahan
dalam mengatur informasi recipient.
Jika sistem Anda tidak menggunakan file db melainkan
menggunakan file dbm maka deklarasikan dbm
bukan hash. Untuk mengetahui tipe map yang didukung
oleh Postfix, ketiklah perintah postconf -m pada konsole.
Postfix warnings and error messages
Example configurations
Sendmail incompatibility
Running hundreds of Postfix processes
Postfix performance
Receiving mail via the network
Mail relaying
Remote delivery
Local (non-virtual) delivery
Mailing lists
Virtual domains
Address rewriting
Content filtering
Other transports: UUCP, FAX, etc.
Postfix queue maintenance
Compiling and installing Postfix
Problems with specific Operating Systems
Problems with Compaq
Problems with IRIX
POP or IMAP problems
Postfix adalah sebuah sistem pengiriman email. Postfix tidak mengimplementasikan
servis seperti POP atau IMAP untuk membaca email. Terdapat beberapa implementasi
POP/IMAP yang bisa berkerja dengan perangkat lunak semacam Posfix
Stand-alone machine
Terlepas dari semuanya, seharusnya Postfix bisa bekerja tanpa perubahan apapun dalam sebuah komputer stand-alone
yang mempunyai akses langsung ke Internet. Paling tidak begitulah konfigurasi Postfix awal pada saat menginstall Postfix dari source code-nya
Meskipun jika komputer tersebut dibelakang intranet firewall atau memakai koneksi dial-up, itu hanya membutuhkan sedikit waktu saja untuk menkonfigurasi ulang,
untuk jelasnya silahkan melihat bagian yang bersangkutan.
Workstations and servers
Pada bagian ini akan digambarkan sebuah lingkungan workstation-server.
Dimana sistem mengirim email dengan format user@domain. Dan juga menerima email dengan format
user@hostname. Dan server juga menerima email untuk user@domain.
/etc/postfix/main.cf:
myorigin = $mydomain
/etc/postfix/main.cf:
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain
/etc/aliases:
joe: joe@joes.workstation
jane: jane@janes.workstation
Null clients
Sebuah null client adalah sebuah mesin yang hanya dapat mengirim email saja.
Tetapi tidak dapat menerima email dari jaringan, dan tidak mengirim email secara lokal.
Sebuah null client biasanya menggunakan POP atau NFS untuk mengakses mailbox.
/etc/postfix/main.cf:
myorigin = $mydomain
relayhost = $mydomain
local_transport = error:Pengiriman Lokal tidak diaktifkan
/etc/postfix/master.cf:
Comment out the SMTP server entry
Comment out the local delivery agent entry
Running Postfix inside an intranet
Cara yang paling gampang dalam mengkonfigurasi Postfix pada sebuah
network yang mempunya firewall adalah mengirimkan semua email anda kepada sebuah
intranet mail gateway, dan biarkan mail gateway tersebut memproses forwarding-nya.
/etc/postfix/main.cf:
myorigin = $mydomain
/etc/postfix/main.cf:
relayhost = $mydomain
/etc/postfix/main.cf:
relayhost = host.my.domain
/etc/postfix/main.cf:
disable_dns_lookups = yes
/etc/postfix/transport:
my.domain :
.my.domain :
* smtp:gateway.my.domain
/etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport
Running Postfix on a firewall
Catatan: tulisan ini hanya berlakun untuk Postfix versi 2.0 atau lebih.
Untuk mengetahui lebih lanjut versi Postfix yang anda pakai, silahkan menjalankan
perintah postconf mail_version.
/etc/postfix/main.cf:
myorigin = domain.com
mydestination = domain.com
local_recipient_maps = hash:/etc/postfix/recipients
transport_maps = hash:/etc/postfix/transport
mynetworks = 12.34.56.0/24
smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination
local_transport = error:local mail delivery is disabled on this machine
/etc/postfix/transport:
domain.com smtp:inside-gateway.domain.com forwards user@domain.com
/etc/postfix/master.cf:
Comment out the local delivery agent
Running Postfix on a dialup machine
Pada bagian ini dikhususkan untuk koneksi dialup yang mati
pada saat - saat tertentu. Untuk koneksi dialup yang
selalu jalan 24x7, silahkan lihat bagian workstations and servers.
Jika anda tidak mempunyai nama hostname sendiri (misalnya dengan dynamic IP addressing) dan harus mengirim email sebagai user@your-isp.com, anda juga harus mempelajari pada bagian delivering some users locally while sending mail as user@domain
Jika komputer anda tidak terkoneksi setiap saat, maka tidak akan banyak kesempatan bagi Postfix untuk mengirim email ke tempat - tempat yang susah di Internet. Sangat lebih baik baik jika semua email dikirim ke sebuah server yang selalu terkoneksi setiap saat.
/etc/postfix/main.cf:
relayhost = smtprelay.someprovider.com
Biasanya, Postfix akan mencoba mengirim email keluar sesuai dengan keinginannya. Jika server anda menggunakan IP on-demand dialup, hal ini menyebabkan sistem untuk men-dial sewaktu anda mendapat email baru, dan setiap kali Postfix mencoba untuk mengirim email yang tertunda. Untuk mencegah supaya tidak server tidak men-dial, maka non-aktifkan pengiriman spontaneous SMTP mail.
/etc/postfix/main.cf:
defer_transports = smtp (Only for systems that use on-demand dialup IP)
Beberapa orang menggunakan Postif untuk mengirim email melalui LAN yang tidak selalu terkoneksi setiap waktu. Dalam kondisi seperti ini, pengiriman email akan mengalami delay sementara Postfix SMTP client akan melakukan pengiriman dan penerimaan domain DNS lookup agar dapat memenuhi standar-compliant. Untuk menghindari delay - delay seperti ini, non-aktifkan semua SMTP client DNS lookups.
/etc/postfix/main.cf:
disable_dns_lookups = yes (Only for delivery across LANs that are disconnected most of the time)
Ketika anda mendisable DNS lookups, anda juga harus mendeklarasikan relayhost dengan sebuah numeric IP address, atau dengan sebuah hostname yang bisa menerjemahkan satu atau lebih alamat IP (dengan menon-aktifkan DNS lookup, Postfix tidak melakukan MX lookup)
Tuliskan perintah berikut ini kedalam script dialup PPP atau SLIP :
Lokasi dari perintah sendmail berbeda pada setiap sistem. Pada beberapa versi UNIX, gunakan /usr/lib/sendmail.
Untuk mengetahui apakah mail queue sudah bersih, gunakan sesuatu seperti dibawah ini:
#!/bin/sh
# Start deliveries.
/usr/sbin/sendmail -q
# Allow deliveries to start.
sleep 10
# Loop until all messages have been tried at least once.
while mailq | grep '^[^ ]*\*' >/dev/null
do
sleep 10
done
Jika anda telah menon-aktifkan spontaneous SMTP mail delivery, maka anda juga harus menjalankan perintah diatas setiap kali pada saat koneksi internet tersambung, sehingga email yang baru akan dibersihkan dari antrian.
Dengan sebuah sistem mail terdistribusi seperti Postfix, hal ini adalah sangat sukar di implementasikan. Tidak seperti sendmail, tidak ada proses Postfix mail delivery yang dijalankan dengan kontrol dari user . Sebaliknya, Postfik mengirim email dengan daemon proses sehingga tidak mempunyai hubungan parent-child dengan proses user. Hal ini meniadakan sebagian besar dari kemnungkinan eksploit yang bersangkutan dengan enviroment variables, signal handlers, dan dengan proses yang beratribut lain yang oleh UNIX diturunkan dari proses parent ke proses child.
Postfix menggunakan multiple proses agar dapat memisahkan antar subsystems. Dengan membuat delivery agents untuk berkomunikasi secara langsung kepada proses - proses user membuatnya semakin susah untuk ditembus dan membuat Postfix semakin aman daripada program - program mail seperti biasa.
Ketika saya menggunakan Sendmail, setelah 4 jam, sendmail akan selalu mengirim pesan balik kepada pengirim yang mengatakan bahwa adanya penundaan pengiriman email.
Agar Postfix mengirim pesan "delayed mail" setelah 4 jam, maka deklarasikan:
/etc/postfix/main.cf:
delay_warning_time = 4h
Dengan Postfix, pesan mail yang tertunda secara standar akan selalu dinon-aktifkan - orang - orang sudah mendapat banyak email.
Beberapa orang akan berdebat bahwa hal ini adalah cara yang benar. Hal ini mungkin hanya masalah apa yang diinginkan dan kebiasaan.
Hal ini hanya bisa "diperbaiki" dengan membuat Postfix berjalan lebih lambat. pada contoh diatas, pertama-tama Postfix akan meluaskan semua daftar distribusi sebelum memulai segala pengiriman. Secara normal, Postfix mengirim pesan kepada beberapa alamat yang berbeda secara paralel, dan tak terkecuali pengiriman lokal. Hal inilah yang membuat Postfix bekerja lebih cepat daripada sendamail.
Wietse percaya bahwa Postfix mengimplementasi proses yang "benar", dan mencurigai bahwa proses standar Sendmail ada peninggalan dari masa lalunya yang gelap ketika Sendmail hanyalan sebuah algoritma yang mudah untuk menghindari pemrosesan alias yang sama.
Meskipun begitu, sebagai hasil dari arsitektur implementasi Postfix, alias dari owner-foo hanya terkena dampaknya setelah perluasan alias selesai.
Masalah pengiriman yang terjadi saat mengekspansi nama alias, termasuk juga pengiriman terhadap perintah atau file - file, akan dilaporkan kepada pengirim asal yang tercantum pada alamat email.
Alasannya adalah bounces dikirimkan oleh Postfix queue manager, yang dimana tidak mengetahui bahwa alamat pengirim telah diganti.
Keterbatasan ini akan bisa diperbaiki dengan merubah bagaimanakah Postfix delivery agent memperlakukan email yang tidak bisa dikirimkan.
Untuk memperbaiki masalah untuk Postfix, jalankan perintah berikut ini sebagai root:
newaliases
Perintah ini akan membuat aliases.db dalam format yang Postfix kehendaki.
Untuk memperbaiki masalah ini adalah untuk menginstall kembali Berkeley DB library. Sebagai contoh, RedHat versi 7.0 menggunakan object library Berkeley DB versi 3 secara standar, tetapi tidak secara standar menginstall file /usr/include/db.h. Agar dapat mengkompile Postfix dengan benar, anda harus menginstall juga paket db3-devel.
Pada sistem yang telah terinstall, termasuk juga file <db.h> dan terhubung dengan -ldb, seharusnya bisa mengakses file - file dari Berkeley DB library yang sama versinya.
Untungnya, beberapa sistem Linux mempunya utility yang sangat membantu yang dibernama linuxconf yang secara automatis "memperbaiki" file permissions yang benar untuk file yang digunakan untuk perintah sendmail Sendmail. Bahkan ketika anda mereset bit set-uid pada sendmail executable file Postfix, linuxconf dengan senang hati akan merubahnya kembali untuk anda.
Pada sistem SuSE, utility bernama SuSEconfig. pada sistem Linux lain mungkin menggunakan nama yang berbeda. Penolakan umum mengenai keuntungan dan sebagainya. Bisa ditambahkan.
# /etc/rc.d/init.d/linuxconf stop && rpm --erase linuxconf
dan pastikan bahwa didalam file /etc/sysconfig/security (kalau SuSE versi lama, berada dalam file /etc/rc.config), PERMISSIONS_SECURITY menyatakan local last, CONTOH::/usr/sbin/sendmail root.root 755
CHECK_PERMISSIONS=set PERMISSION_SECURITY="secure local"
Envelope sender address sendiri juga nilai standar dari From: header address, ketika mendeklarasikan none pada pesan.
Untuk memperbaikinya, deklarasikan envelope sender address pada perintah sendmail:
sendmail -f user@domain ...
Untuk mengeset kernel parameter berikut ini pada saat booting, tambahkan beberapa baris ini ke dalam file /boot/loader.conf (hal ini telah diverifikasi dengan FreeBSD 4.4):
kern.ipc.maxsockets="5000" kern.ipc.nmbclusters="65536" kern.maxproc="2048" kern.maxfiles="16384" kern.maxfilesperproc="16384"
Dengan FreeBSD 4.2, parameter pada 3 baris terakhir tidak dapat diset dari /boot/loader.conf. Untuk mengesetnya, bukalah open file limit, kemudian jalankan perintah berikut sebagai root:
# sysctl -w kern.maxfiles=16384 # sysctl -w kern.maxfilesperproc=16384
Dengan FreeBSD 4.2, kern.maxproc bisa diset hanya dengan mengkompile ulang kernel dengan settingan maxusers yang berbeda pada file konfigurasi kernel
Informasi berikut ini tergantung dari versi kernel.
Untuk mengeset parameter pada saat booting pada Linux sistem yang mempunyai /etc/sysctl.conf, tambahkan baris perintah berikut ini:
fs.file-max = 16384 kernel.threads-max = 2048
Untuk mengeset parameter kernel pada run time, jalankan perintah berikut ini sebagai root:
# echo 16384 > /proc/sys/fs/file-max # echo 2048 > /proc/sys/kernel/threads-max
* set hard limit on file descriptors set rlim_fd_max = 4096 * set soft limit on file descriptors set rlim_fd_cur = 2048
% make tidy % make makefiles "CCARGS=-DFD_SETSIZE=2048" % make
Saya mempunyai banyak email pada incoming queue, tapi Postfix hanya menjalankan beberapa outbound SMTP deliveries. Mengapa tidak menjalankan beberapa SMTP client lagi?
Masalah anda mungkin satu dari beberapa dibawah ini
/etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport
deadbeats_destination_concurrency_limit = 50
/etc/postfix/transport:
hotmail.com deadbeats:
yahoo.com deadbeats:
/etc/postfix/master.cf:
deadbeats unix - - n - - smtp
-o smtp_connect_timeout=5 -o smtp_helo_timeout=5
/etc/postfix/main.cf:
mydestination = my.own.host.name
relay_domains = my.corp.domain
relay_transport = relay
/etc/postfix/master.cf:
relay unix - - n - - smtp
-o smtp_connect_timeout=2 -o smtp_helo_timeout=2
Untuk memecahkan masalah ini adalah dengan menggunakan harddisk yang lebih cepat, dan/atau menggunakan harddisk lain untuk logging, mail queue, dan mailboxes.
Saat ini pemecahannya adalah dengan mengkonfigurasi multiple ip address pada setiap komputer, dan menjalankan proses Postfix tiap ip address, dan jikalau bisa pada setiap proses dijalankan pada harddisk yang berbeda. Proses Postfix tidak bisa membagi direktori queue, tetapi bisa membagi direktori mailbox.
Tinggal menjalankan setiap proses Postfix dengan direktori konfigurasi yang berbeda:
# postfix -c config_directory start
Setiap file main.cf mempunyai setting $myhostname yang berbeda, tergantung dari interface yang harus kerjakan.
/my/own/main.cf:
queue_directory = /my/own/queue/directory
myhostname = foo1.my.domain
inet_interfaces = $myhostname
Server Postfix saya terlalu lambat. Ketika saya telnet pada SMTP port (telnet hostname 25), respon yang diberikan datang setelah 40 detik. Sedang, ketika saya telnet pada POP port (telnet hostname 110), responnya sangat cepat tanpa delay.
Jawaban:
1) Anda perlu untuk menkonfigurasi Postfix agar bisa menjalankan beberapa proses SMTP server. Edit smtpd entry dalam file master.cf dan sesuaikan limit proses, atau menaikkan setting default_process_limit dalam file main.cf. Jalankan perintah postfix reload agar perubahan menjadi efektif.2) Anda mempunyai masalah pada name service.
Postfix memanggil fungsi gethostbyname() pada C library dan gethostbyaddr() agar dapat menemukan SMTP client hostname. Fungsi - fungsi ini menggunakan beberapa files sistem konfigurasi agar dapat memenuhi permintaan. Kemungkinan malah akan berakhir dengan memakai DNS untuk alasan itu, yang tidak berada dalam kontrol Postfix.
Tergantung dari sistem anda, file - file kontrol berikut ini bisa bernama /etc/nsswitch.conf, /etc/svcorder, /etc/host.conf atau bernama yang lain. File - file ini menentukan apakah fungsi library C akan menggunakan local /etc/hosts sebelum atau sesudah DNS.
Log - log koneksi client SMTP server Postfix tercatat dengan angka ip address bukan dengan nama host. Ketika saya menggunakan nslookup alamat ip tsb menghasilkan nama.
Anda menjalankan server smtp Postfix didalam sebuah chroot jail untuk keamanan ekstra, tetapi beberapa files konfigurasi hilang atau ada informasi yang tidak tepat. Perintah "postfix check" akan melaporkan file - file apakah yang terdapat informasi yang salah tsb. Contoh:
warning: /var/spool/postfix/etc/resolv.conf and /etc/resolv.conf differ warning: /var/spool/postfix/etc/localtime and /etc/localtime differ
Agar bisa menjalankan dalam chroot jail, klien SMTP Postfix dan server perlu untuk mengkopi file konfigurasi dari sistem didalam direktory Postifix queue. Letak dari file - file tersebut tergantung dari sistem yang dipakai, tapi Anda paling tidak memerlukan :
/var/spool/postfix/etc/resolv.conf
/var/spool/postfix/etc/services
Dan tentu saja, direktori - direktori dan file - file ini harus mempunyai kepemilikan oleh root, tetapi mereka harus bisa diakes oleh postfix user, jadi direktori - direktori tersebut harus dalam mode 755 dan file - file dalam mode 644.
Untuk keterangan lebih lanjut, lihatlah didalam file - file pada direktori examples/chroot-setup dari distribusi Postfix source code.
Ketika Postfix mencari nama host dari IP address SMTP client, Postfix juga mengecek apakah IP address SMTP client terdaftar pada nama host dari SMTP client.
Jika alamat IP SMTP client tidak terdaftar pada hostname SMTP client, maka Postfix menyimpulkan bahwa SMTP client hostname tidak sesuai dengan alamat IP SMTP client, dan menghiraukan hostname SMTP client. Sebuah peringatan akan di log, sehingga anda bisa mencari tahu kenapa sebuah SMTP client di hentikan atau tidak oleh pengecekan junk mail atau mail relay.
Anda bisa mengkontak orang yang mengelola SMTP client DNS records, dan menjelaskan kepada mereka bahwa setiap alamat IP membutuhkan 1(satu) PTR record, dan PTR record yang ini membutuhkan sebuah A record yang cocok.
Beberapa orang yang membaca RFC - RFC bahwa untuk satu alamat IP bisa memiliki beberapa PTR records, tapi hal tersebut membuat PTR records menjadi kurang berguna daripada yang sudah ada. Dalam beberapa kasus, mempunyai beberapa nama setiap alamat IP hanya akan memperburuk masalah dalam mendapatkan hostname SMTP client.
Saya mempunyai Postfix setup pada sebuah server tetapi saya menginginkan untuk menyeleksi group dari pengguna internet yang bisa merelay email melalui server tsb. Dan saya menyeleksinya menggunakan basis alamat IP (contoh, satu blok 256 alamat ip dinamis) atau berbasis pada hostname (blahblah.dialup.isp.com)
Cara yang paling sering dipakai adalah menyuruh user untuk mengirim email melalui sebuah authenticated protocol ketimbang memakai protokol SMTP biasa.
Cara lain yang bagus adalah menggunakan SMTP protokol biasa dan mengautentifikasi user terlebih dahulu, sebagai contoh, dengan sebuah skema "Loginlah dahulu melalu POP sebelum menggunakan SMTP". Dalam hal ini, ada perangkat lunak yang mengelola tabel akses Postfix-compatible dengan informasi alamat IP client.
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
permit_mynetworks
check_client_access hash:/etc/postfix/client_access
reject_unauth_destination
/etc/postfix/client_access:
4.3.2.1 OK
5.4.3.2 987654321
Specify dbm instead of hash if your system uses dbm files instead of db files. To find out what map types Postfix supports, use the command postconf -m.
Catatan. Beberapa perangkat luna non-Postfix menggunakan file - file btree ketimbang file - file hash. Untuk itu, Anda harus menyesuaikan restriksi pada check_client_access secara benar.
Sebuah cara yang jarang dipakai adalah berdasarkan pada alamat IP client (contoh, sebuah 256-blok) atau hostname DNS (contoh, blahblah.pop.isp.com). Skema ini tidak mengautentifikasi user. Jika anda menggunakan kontrol akses relay bedasarkan pada IP/DNS, berdoalah bahwa tak ada pengguna yang menggunakan ISP yang sama, mengarahkan spam software mereka pada server anda, atau anda akan berakhir dengan tercantum pada black-list yang ada di internet.
Cara yang paling jarang dipakai adalah berdasarkan pada alamat pengirim. Hal ini sama saja dengan men-spoof oleh siapa saja yang menerima email dari tempat anda. Jika anda menggunakan kontrol akses alamat pengirim, berdoa sajalah agar tidak ada spammer yang mengetahui alamat dari user anda.
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
permit_mynetworks
check_client_access hash:/etc/postfix/client_access
check_sender_access hash:/etc/postfix/sender_access
reject_unauth_destination
/etc/postfix/client_access:
11.22.33 OK
dialup.isp.com OK
/etc/postfix/sender_access:
joe@my.domain OK
blow@my.domain OK
Bagaimanakah saya bisa mengkonfigurasi Postfix sehingga beberapa user bisa mengirim email ke internet dan beberapa tidak bisa. User yang tidak mempunyai akses harus menerima sebuah self-generated bounce message. Dan tolong jangan mendiskusikan apakah perestriksian akses dibutuhkan dalam hal ini, karena hal tersebut bukan salah satu pilihan saya.
Postfix mendukung restriksi pada setiap user. Restriksi ini di implementasikan oleh SMTP server. Untuk itu, user - user yang melanggar kebijakan tersebut, maka email mereka akan ditolak oleh SMTP server. Seperti ini:
554 <user@remote>: Access denied
Implementasi ini menggunakan 2 tabel lookup. Satu tabel mendefinisi apakah user dibatasi untuk mengirim email, dan tabel lainnya mendefinisikan apakah tujuannya adalah lokal. Hal terakhir ini adalah sebuah latihan untuk para pembaca, untuk merubah ini menjadi sebuah skema dimana hanya beberapa user yang mempunyai akses untuk mengirim email yang ditujukan diluar, dan dimana beberapa user yang tidak mendapatkan akses.
Contoh ini mengasumsikan file DB/DBM, tetapi hal ini bisa juga dilakukan dengan LDAP atau SQL.
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
check_sender_access hash:/etc/postfix/restricted_senders
...other stuff...
smtpd_restriction_classes = local_only
local_only = check_recipient_access hash:/etc/postfix/local_domains, reject
/etc/postfix/restricted_senders:
foo@domain local_only
bar@domain local_only
/etc/postfix/local_domains:
this.domain OK matches this.domain and subdomains
that.domain OK matches that.domain and subdomains
Deklarasikan dbm bukan hash jika sistem anda menggunakan file dbm bukan file db. Untuk mengetahui tipe map apa yang mendukung Postfix, gunakanlah perintah postconf -m.
Dengan munculnya sejumlah kata smtpd_restriction_classes, sehingga Postfix bisa membuka /etc/postfix/local_domains.db sebelum memasuki chroot jail, sehingga ini hanyalah sebuah contoh implementasi.
Skema ini tidak mengautentifikasi user, untuk itu bisa di bypass dengan beberapa cara:
DNS:
the.backed-up.domain.tld IN MX 100 your.machine.tld
/etc/postfix/main.cf:
relay_domains = $mydestination the.backed-up.domain.tld
smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination
Ketika anda adalah primary mx untuk sebuah remote site anda juga butuh :
/etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport
/etc/postfix/transport:
the.backed-up.domain.tld relay:[their.mail.host.tld]
Deklarasikan dbm bukan hash jika sistem anda menggunakan file dbm bukan file db. Untuk mengetahui tipe map apa yang mendukung Postfix, gunakanlah perintah postconf -m.
Ketika saya mengirim email kepada alamat remote, hal dibawah ini yang terjadi setelahnya :
Jul 14 12:45:38 myhostname postfix/qmgr[2246]: 74FBF30501: from=<sender@sender.domain> size=309 (queue active) Jul 14 12:45:39 myhostname postfix/smtp[2349]: 74FBF30501: to=<recip@recip.domain> relay=none, delay=3944, status=deferred (Name service error for name=recip.domain type=MX: Host not found, try again)Bagaimanapun juga, saya bisa nslookup hostname dengan baik.
Hal ini bisa berarti beberapa masalah berikut ini.
Bagaimanapun juga, ketika anda seringkali gagal dalam mengirim email secara konstan, maka mungkin anda mempunyai masalah yang berbeda: kerusakan pada penemuan jalur MTU. Atau bisa disebabkan oleh PIX firewall yang rusak.
ID bug ini adalah CSCds90792. Fitur "fixup protocol smtp" tidak dapat secara benar mengkoreksi untuk menangani kasus dimana "." dan "CRLF" pada akhir sebuah email yang dikirim dengan paket berbeda.
Bagaimanakah untuk mengetahui apakah pengirim berada dibelakang Cisco PIX dengan "fixup protocol smtp" yang aktif? Sebagaimana pada versi 5.1 dan selanjutnya, perintah fixup protocol smtp merubah karakter di smtp banner menjadi asterisks kecuali untuk karakter "2", "0" dan "0 SPACE".
Ketika anda terhubung dengan pengirim yang berada dibelakang filter semacam ini, anda akan melihat sesuatu seperti:
220 **************************************0******0*********20 ****200**0*********0*00
Isi dari email, bagaimanapun juga terkirim sebagai beberapa datagrams, setiap datagram biasanya berkisar antara kbyte besar atau lebih besar dari itu, tergantung dari MTU network lokal.
Ketika email gagal secara rutin karena timeout, saya menduka bahwa mesing pengirim menjalankan sistem UNIX yang modern yang mengimplementasikan pencarian jalur MTU. Hal ini mengakibatkan server mengirim paket - paket tersebut sebesar yang mungkin terkirim melalui LAN, dengan tidak mengeset IP DON'T FRAGMENT bit, mencegah router yang berada ditengah yang akan memisahkan packets yang terlalu besar untuk network mereka.
Tergantung dari jalur jaringan yang dipakai oleh email, beberapa router yang pada jalur tersebut akan merespon dengan pesan ICMP MUST FRAGMENT yang mengatakan bahwa paket terlalu besar. Normalnya, komputer pengirim akan mengirim kembali data setelah memisahkan data tersebut menjadi potongan - potongan kecil.
Meskipun begitu, semua menjadi rusak begitu beberapa router yang dekat dengan mesin pengirim mengeluarkan semacam pesan ICMP feedback, hal ini adalah sebuah cara yang salah untuk melindungi sistem dari serangan semacam itu. Karenanya, pesan ICMP feedback tidak pernah mencapai mesin pengirim, dan koneksi menjadi timeout.
Hal ini sama dengan masalah konfigurasi yang menyebabkan masalah dengan web server yang berada di belakang packet filter yang salah konfigurasi: images/file - file yang kecil dapat dikirim sedangkan yang berukuran besar akan timeout karena server tidak melihat adanya pesan MUST FRAGMENT feedback.
Pencegahan:semua mesing pengirim, menonaktifkan pencarian jalur MTU. Email akan bisa keluar, tetapi orang lain akan tetap menderita. Bagaimanakah cara menonaktifkan pencarian jalur MTU? Itu tergantung. Solaris mempunyai sebuah perintah ndd; sistem yang lain mempunyai alat yang berbeda seperti sysctl untuk mengontrol parameter kernel yang berjalan pada sistem.
Pencegahan: pada mesin penerima, buatlah MTU yang lebih kecil. Sebagai contoh, orang - orang yang menggunakan PPPoE (PPP over Ethernet) seringkali harus memilih sebuah MTU yang lebih kecil dari standar 1500 dari ethernet.
Pemecahan: temukanlah router yang menolak pesan ICMP MUST FRAGMENT, dan yakinkan orang yang bertanggung jawab untuk memperbaiki konfigurasinya.
Hal ini pada akhirnya akan terpecahkan ketika Postfix mengimplementasikan SMTP connection caching.
Mengaktifkan operasi chroot menambah sebuah pelindung non-trivial untuk para penetrasi sistem.
Ada 2 solusi:
Untuk mengetahui masalah untuk "unknown mail transport error", ketikan perintah berikut ini:
egrep '(warning|fatal|panic):' /var/log/maillog | lessPerhatikanlah pada pesan yang mempunyai label sebagai fatal dan panic. Hal ini menggambarkan kegagalan katastropic yang perlu dialamatkan sebelum Postfix merasa senang. Masalah yang mempunyai label fatal bisa diperbaiki oleh anda sendiri, dengan cara mengkostumasikan file konfigurasi, perijinan file, dsb. Masalah yang mempunyai label panic diperbaiki oleh pencipta Postfix, dengan merubah Postfix source code.
Solusi: seperti pada saat anda diharapkan untuk tidak login sebagai root(terkecuali untuk kondisi yang khusus), anda tidak tidak diharapkan untuk menerima email sebagai root.
/etc/aliases:
root: you
Pada beberapa sistem, database alias tidak pada fiel /etc/aliases. Untuk mengetahui dimanakan database alias pada sistem anda, jalankan perintah postconf alias_maps.
Pesan peringatan Postfix mempunyai arti bahwa penotifikasian email baru gagal karena servis jaringan comsat dinonaktifkan.
Untuk menonaktifkan comsat client code dalam Postfix delivery agent, deklarasikan:
/etc/postfix/main.cf:
biff = no
Catatan: versi terbaru dari procmail juga menghasilkan notifikasi biff. Untuk mematikan biff secara sempurna anda mungkin juga harus memperbarui fie konfigurasi procmail.
Untuk mengaktifkan servis jaringan comsat, hilangkan tag komentar dari baris yang bersangkutan pada file inetd.conf, dan lakukan kill -HUP pada proses inetd.
Pesan peringatan tersebut mempunyai arti bahwa NIS (Network Information Service) tidak diaktifkan pada server anda. Hal ini bukan masalah. Hanya saja sangatlah sulit untuk Postfix untuk mengetahui hal seperti ini secara cepat.
Untuk menonaktifkan NIS client code dalam Postfix local delivery agent, perbaruilah file main.cf pada baris yang bersangkutan dan deklarasikan satu dari berikut ini, tergantung dari jenis nama file aliases:
/etc/postfix/main.cf:
alias_maps = $alias_database
Hal ini akan memaksa Postfix hanya menggunakan local aliases database, jika salah satu telah terdefinisi.
Standar setting dari local_recipient_maps mengasumsikan bahwa anda menggunakan delivery agent standar Postfix:
/etc/postfix/main.cf:
local_recipient_maps = $alias_maps, proxy:unix:passwd.byname
Anda membutuhkan bagian proxy: saja jika master.cf mendeklarasikan bahwa Postfix SMTP server jalan dengan mode chroot. Seperti yang telah didistribusikan oleh pencipta, Postfix tidak menjalankan daemon dengan chroot.
Tabel local recipients dicari berdasarkan pada recipient address (user@domain) dan oleh recipient name (address minus domain). Postfix tidak memperdulikan apakah hasil dari lookup, jadi anda bisa menggunakan sembarang database yang Postfix dapat mengerti formatnya.
Untuk menghentikan Postfix dari menolak local email:
Untuk menonaktifkan fitur local_recipient_maps, deklarasikan:
/etc/postfix/main.cf:
local_recipient_maps =
Dengan setting ini, SMTP server Postfix tidak akan menolak email untuk local recipients yang tidak diketahui.
/etc/postfix/main.cf:
myorigin = domain.tld
/etc/postfix/main.cf:
virtual_alias_maps = hash:/etc/postfix/virtual
/etc/postfix/virtual:
root root@localhost
postmaster postmaster@localhost
Deklarasikan dbm bukan hash jika sistem anda menggunakan file dbm bukan file db. Untuk mengetahui tipe map apakah yang didukung oleh Postfix, gunakanlah perintah postconf -m .
/etc/postfix/main.cf:
home_mailbox = Maildir/
Segala macam pathname relatif yang diakhiri dengan / menyalakan pengiriman maildir. Value home_mailbox ditambahkan pada direktori user home pathname.
Format maildir juga didukung dengan pengiriman melalui aliases atau melalui file - file .foward. Deklarasikan /file/name/ sebagai tujuan. Karakter trailing / akan menyalakan pengiriman maildir.
/etc/postfix/main.cf:
mailbox_command = /path/to/procmail
/etc/postfix/main.cf:
mailbox_command = /path/to/procmail -a $EXTENSION
Jika anda bisa, hindari penggunakan segala macam shell meta characters seperti $ atau " atau IFS atau &&, karena mereka memaksa Postfix untuk menjalankan banyak shell process. Tetapi, procmail adalah babi, dan jika beruntung untuk mendapat penghindaran dari sebuah shell bisa tidak terlihat.
- DOMAIN
- Tulisan yang berada pada sisi kanan dari @ dalam recipient address.
- EXTENSION
- Adress extension part opsional.
- HOME
- Direktori dari recipient home.
- LOCAL
- Tulisan yang berada pada sisi kiri dari @ pada recipient address, sebagai contoh, $USER+$EXTENSION.
- LOGNAME
- Recipient username.
- RECIPIENT
- Alamat keseluruhan dari recipient address, $LOCAL@$DOMAIN.
- SENDER
- sender address secara lengkap.
- SHELL
- recipient login shell.
- USER
- recipient username.
/etc/postfix/main.cf:
local_recipient_maps = proxy:unix:passwd.byname $alias_maps ...
Pemecahannya, mengukur dari gejala perang untuk mematikan Delivered-To: header:
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
... regexp:/etc/postfix/access_regexp ...
smtpd_recipient_restrictions =
... pcre:/etc/postfix/access_regexp ...
/etc/postfix/access_regexp:
/^(.*)-outgoing@(.*)/ 554 Use $1@$2 instead
POSIX regular expression support (regexp) juga diaktifkan secara standar oleh semua sistem UNIX moder. Perl-compatible regular expression support (pcre) dapat dinyalakan secara opsional; silahkan melihat file PCRE_README pada top-level direktori Postfix source.
Lihat pula FAQ untuk masalah dengan perintah majoromo
Saat ini, solusi yang paling direkomendasi adalah untuk mengedit
approve script dan menghilangkan baris header yang cocok dengan:
Ya, hal ini mengasumsikan bahwa moderator tahu apa yang dia kerjakan.
Cara yang kurang dipilih adalah tidak memasukkan Delivered-To:
ketika mengirim kepada sebuah perintah seperti majordomo. Lihatlah
FAQ entry yang berjudul "Getting rid
of the ugly Delivered-To: header".
Jika anda harus menerima email untuk sistem dengan
10-year old vulnerabilities, maka sangatlah penting untuk men-setup
menggunakan sebuah filter regexp yang menolak perintah yang
berpotensial sangat membahayakan seperti MAIL FROM atau RCPT TO.
Bagaimanapun juga, menolak semua envelope addresses dengan /
akan mengakibatkan masalah dengan pemikiran sederhana X.4000
ke mapping alamat Internet yang akan meninggalkan terkuaknya
X.4000 struktur alamat.
Lihat juga dokumentasi pada header
checks restrictions untuk isi dari header message. Pelarangan ini
bisa digunakan untuk melindungi dari serangan dengan perintah atau file
destinations in, sebagai contoh, Errors-To: atau Return-Receipt_To: header message.
Deklarasikan dbm sebagai pengganti hash jika
system anda menggunakan file dbm sebagai pengganti
file db. Untuk mengetahui tipe map apa yang mendukung Postfix
, gunakanlah perintah postconf -m.
Sekarang, hal itu telah cukup ketika mesin anda menerima semua
Internet mail langsung dari Internet. Tetapi tidak jika network anda
lebih sedikit lebih besar dari satu kantor. Sebagai contoh, backup MX
hosts anda akan men-"launder" IP address client dari email yang berasal
dari luar sehingga akan kelihatan dari mesin yang dipercaya.
Pada umumnya anda membutuhkan 2 lookup tables: 1 table
yang akan mendaftar tujuan yang butuh untuk dilindungi, dan 1 tabel lainnya
yang akan mendaftar yang akan diberi ijin untuk mengirimkan kepada tujuan yang
dilindungi.
Hal yang mengikuti berdasar pada SMTP envelope address pengirim,
dan hal ini adalah melakukan SMTP sender spoofing.
Kata - kata yang tidak perlu pada smtpd_restriction_classes sangat
dibutuhkan sehingga Postfix mengetahui yang manakah lookup tabel
yang perlu dibuka sebelum memasuki chroot jail. Hal ini hanyalah
sebuah contoh dari implementasi.
Sangat mudah mensiasati sistem ini, karena yang dilakukan
hanyalah men-spoof SMTP address pengirim.
Jika daftar internal adalah sebuah low-volume one, mungkin
akan lebih masuk akal untuk membuatnya menjadi moderate.
Jika anda menginginkan untuk mengirim domain melalui Postfix virtual(8) mailbox delivery agent, maka
anda harus mendaftar virtual domain name pada tabel yang terdefinisi
dengan parameter virtual_mailbox_domains.
Jika anda menginginkan untuk mengirim domain sebagai sebuah
virtual(5) alias domain, dimana
setiap alamat dialiaskan pada sebuah real atau remote address, maka
anda harus mendaftarkan virtual domain name pada tabel yang terdefinisi
dengan parameter virtual_alias_domains.
Jawaban cepat: setup "punch through" virtual aliases yang
mengarahkan mail ke local Postfix aliases:
Hal ini kan mengarahkan mail untuk virtual address
listname@virtual.tld dan lainnya kepada local
address listname@your.domain.tld dan lainnya.. Mail
untuk local aliases ini akan dikirimkan kepada perintah eksternal atau
files dsb. oleh Postfix local delivery agent.
Jawaban panjangnya:
Mengirimkan email kepada sebuah file atau perintah adalah
sebuah operasi security yang sangat sensitif, dikarenakan operasi tsb
harus dijalankan dengan akses yang benar. Hanya akses root
software seperti Postfix local delivery agent yang bisa membuat
hak akes untuk perintah ataupun pengiriman file.
Untuk alasan keamanan, Postfix mencoba untuk menghindari
akes root sebisa mungkin. Biasanya, Postfix virtual mapping
dilakukan dengan sebuah non-akses daemon, sehingga tidak ada
cara yang aman untuk menjalan perintah ataupun mengirim file yang
terdefinisi pada virtual maps.
Jawaban: Postfix mencatat alamat pengirim yang asli
pada header pesan X-Original-To:.
Hal ini membutuhkan parameter enable_original_recipient tidk
dirubah dari nilai awalnya yang yes. Dengan enable_original_recipient
yang diset no, pesan untuk beberapa recipients pada domain hanya
akan dikirimkan kepada penerima pertama, dan header X-Original-To:
tidak akan ditambahkan pada pesan tsb.
Address masquerading ditujukan hanya untuk digunakan pada mail gateway.
Catatan bahwa gateway harus mempunyai append_dot_mydomain
dan append_at_myorigin
yang aktif (dalam hal ini adalah setting standar) jadi semua alamat
akan memenuhi syarat sebelum mereka tersubjek kepada address masquerading.
Dalam beberapa kasus, anda mungkin mengharapkan beberapa users atau
hosts dikecualikan dari masquerading.
Catatan bahnwa urutan diatas sangatlah penting: perkecualian seperti
somehost.my.domain harus mendahului $mydomain
pada pernyataan diatas.
Seharusnya hal itu akan berjalan tanpa mengatakan apapun
itu jika anda ingin mengkecualikan user yang mengirimkan
email dengan user@my.domain, hal tersebut akan
sedikit lebih susah buat anda untuk mengkecualikannya.
Jawaban panjang: pesan tersebut mempunyai banyak pesan header Received:.
Sebuah header received akan ditambahkan manakala Postfix (atau MTA lainnya)
menerima sebuah pesan. Sejumlah besar pesan header Received: adalah
pertanda bahwa mail tersebut mengalami looping.
Komentar: email menggunakan teknik yang berbeda yang digunakan
untuk menghindari IP forwarding loops. Dengan IP, pengirim mengeset
sebuah field TTL(time to live) pada header IP. Field ini berkurang pada
setiap router yang dilalui. Ketika TTL mencapai nol, paekt tersebut dibuang
dan pesan error ICMP akan kembali kepada pengirim.
Lihatlah transport manual page
untuk keterangan lebih lanjut.
Deklarasikan dbm bukannya hash jika sistem anda
menggunakan file dmb bukannya db. Untuk mengetahui
tipe map apakah yang mendukung Postfix, gunakanlah perintah
postconf -m.
Ini menjalankan perintah uux, dan mengganti hostname pada lompatan
berikutnya (uucp-host) dan recipients sebelum menjalankan perintah
tersebut. Perintah uux dapat dijalankan tanpat bantuan apapun dari shell,
sehingga tidak ada masalah dengan karakter - karakter meta shell.
Lihatlah deskripsi parameter konfigurasi
relay_domains untuk keterangan lebih lanjut.
Ini menjalankan perintah uux, dan mengganti hostname pada lompatan
berikutnya (uucp-host) dan recipients sebelum menjalankan perintah
tersebut. Perintah uux dapat dijalankan tanpat bantuan apapun dari shell,
sehingga tidak ada masalah dengan karakter - karakter meta shell.
Dibawah ini kita menggunakan skema <fax number>@fax.our.domain
dengan Postfix dan HylaFax. Berikut setting yang digunakan:
Limit proses dari 1 pada file master.cf sangat dibutuhkan
oleh fax software yang tidak dapat menangani beberapa permintaan
pada saat yang bersamaan. Hal ini tidak akan merugikan.
Entry fax_destination_recipient_limit (oleh Simon, Mr.
Simix) sangat dibutuhkan oleh fax software yang tidak dapat
mempunyai lebih dari 1 tujuan pada baris perintahnya. Hal ini
juga tidak merugikan.
Deklarasikan dbm bukannya hash jika sistem anda
menggunakan file dmb bukannya db. Untuk mengetahui
tipe map apakah yang mendukung Postfix, gunakanlah perintah
postconf -m.
Catatan: untuk lebih aman. Jangan cantumkan fax.your.domain pada DNS :-)
Untuk menghapus sejumlah besar file mungkin bisa menggunakan:
Biasanya memang aman melakukan ini pada saat
sistem Postfix sedang berjalan. Bagaimanapun juga, ada
juga kemungkinan kecil akan terhapusnya file queue yang salah.
Skenario ini akan seperti ini:
Postfix menamai sebuah file queue bedasar atas inode number dan
berdasar atas bagian mikrodetik dari waktu pada hari itu. Oleh karena itu,
jike sebuah queue file mempunyai nama yang berdasar pada
inode number orang lain, maka kecil kemungkinan nama file tersebut
akan bertabrakan dengan file queue yang lain.
Tulisan dibawah ini menggambarkan 2 prosedur yang berbeda
untuk mengembalikan file queue dari mesin yang lain atau dari
mesin backup.
Jawaban: anda mencampurkan file include BIND versi 8
dengan file resolver library yang mempunyai versi yang berbeda.
Perbaikan: gunakanlah file include yang sesuai. Contoh:
Jawaban: daripada menggunakan /usr/include/ndbm.h,
anda telah membikin Postfix dengan beberapa file pihak ketiga
yang tidak kompatibel, biasanya /usr/local/include/ndbm.h.
Perbaikan: hapuslah file include ndbm.h pihak ketiga.
Untuk membuat Postfix yang mendukung db pada sebuah
sistem UNIX yang tidak mendukung db secara standar, anda
bisa menggunakan kode source Berkeley DB dari www.sleepycat.com.
Lihatlah pada file DB_README pada distribusi kode source
Postfix tentang instruksi mengenai cara untuk membuat Postfix dengan
Berkeley DB dari Sleepycat's.
Jika anda harus menggunakan gcc, cara yang memungkinkan adalah
menggunakan rutin inet_ntoa() dari kode source BIND pada http://www.isc.org/.
Postfix membuat bit eksekusi pada file queue untuk mengindikasikan
bahwa hal dia telah selesai menerima sebuah pesan. Selama sebuah
file queue tidak mempunyai bit eksekusi, maka Postfix akan
menghiraukannya seperti jika "email sedang dalam penerimaan".
Dengan mengaktifkan peningkatan keamanan, Compaq Tru64 UNIX
mempunyai fitur yang melarang non-superuser yang mencoba menambahkan
bit eksekusi pada sebuah file queue. Sayangnya, Postfix tidak pernah diinformasikan
bahwa usaha tersebut gagal, dan email terlihat menghilang ke sebuah black hole.
Postfix bisa dimodifikasi untuk menggunakan bit yang lain
dari bit eksekusi, namun hal tersebut mungkin akan sama gagalnya
pada sistem yang lain. Kemungkinan lain adalah untuk mengijinkan
non-superuser untuk menambahkan bit eksekusi pada file, dan untuk
memasang file queue Postfix dengan pilihan nonexec atau
yang setara.
Postfix breaks the majordomo "approve"
command
Postfix local delivery agent menambahkan sebuah header pesan
Delivered-To: untuk mencegah perulangan mail forwarding.
Dengan majordomo mailing lists, Delivered-To:
akan menghambat pada saat moderator akan menyetujui posting
yang akan dikirm kedalam milis. Postfix menganggap hal ini
sebagai perulangan.
/delivered-to/i
Postfix accepts MAIL FROM and RCPT TO "| command"
Dengan Postfix, | atau / mempunyai makna spesial hanyak pada saat
tanda tersebut kluar pada aliases, file .forward atau pada files
:include:. Tanda tersebut tidak mempunyai makna spesial pada alamat
email.
/etc/postfix/main.cf:
smtpd_sender_restrictions =
regexp:/etc/postfix/envelope-regexp
reject_unknown_sender_domain
smtpd_recipient_restrictions =
regexp:/etc/postfix/envelope-regexp
permit_mynetworks
reject_unauth_destination
/etc/postfix/envelope-regexp:
/[/|]/ REJECT
Protecting internal email distribution lists
Kami ingin mengimplementasi sebuah daftar distribusi email internal.
Sesuatu seperti all@our.domain.com, dimana aliases kepada semua
pegawai. Pada awalnya kami menggunakan aliases map, tetapi hal tersebut
malah mengakibatkan "all" dapat diakses dari "luar", dan hal ini saya tidak
menginginkan...
:-)
Postfix bisa diimplementasikan per-address access control. Hal yang
mengikutinya berdasar pada SMPT client IP address, dan hal ini adalah
melakukan IP spoofing.
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
hash:/etc/postfix/access
..the usual stuff...
/etc/postfix/access:
all permit_mynetworks,reject
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
hash:/etc/postfix/protected_destinations
..the usual stuff...
smtpd_restriction_classes = insiders_only
insiders_only = check_sender_access hash:/etc/postfix/insiders, reject
/etc/postfix/protected_destinations:
all@my.domain insiders_only
all@my.hostname insiders_only
/etc/postfix/insiders:
my.domain OK
another.domain OK
Postfix rejects mail with "User unknown in virtual alias table"
Jawaban: Anda telah mendaftarkan virtual domain name pada
tabel yang terdefinisi dengan parameter virtual_alias_domains,
tetapi recipient address tidak terdaftar pada tabel yang terdefinisi dengan
parameter virtual_alias_maps.
Postfix rejects mail with "User unknown
in virtual mailbox table"
Jawaban: anda telah mendaftarkan virtual domain name pada
tabel yang terdefinisi dengan parameter virtual_mailbox_domains,
tetapi recipient address tidak terdaftar pada tabel yang terdefinisi dengan
parameter virtual_mailbox_maps.
Postfix does not refuse mail for
unknown users in virtual domains
Mail for unknown users in a
virtual domain fails with "mail loops back to myself"
Postfix refuses mail for virtual
domains with "relay access denied"
Solutions:
Commands, mailing lists, and /file/name
destinations don't work in virtual domains
/etc/postfix/main.cf:
virtual_alias_maps = hash:/etc/postfix/virtual
/etc/postfix/virtual:
listname@virtual.tld listname
owner-listname@virtual.tld owner-listname
listname-request@virtual.tld listname-request
/etc/aliases:
listname: "|whatever"
owner-listname: user@domain
listname-request: "|whatever"
Receiving a virtual domain in a mailbox
Pertanyaan: bagaimana untuk menerima semua email untuk sebuah domain
pada sebuah mailbox tanpa kehilangan informasi asli pengirim? Postfix
Delivered-To mail header hanya menunjukkan pemilik dari mailbox,
bukan virtual address kemana email tsb dikirimkan.
Address masquerading with exceptions
Untuk orang yang berada diluar organisasi anda, sangat diinginkan untuk
melihat alamatnya dengan bentuk user@company.com daripada
alamat dengan individual internal hostnames. Hal ini bisa dilakukan dengan
address masquerading.
/etc/postfix/main.cf:
masquerade_domains = $mydomain
Seperti biasanya, jalankan perintah postfix reload agar perubahan
menjadi efektif.
/etc/postfix/main.cf:
masquerade_exceptions = root
/etc/postfix/main.cf:
masquerade_domains = somehost.my.domain otherhost.my.domain $mydomain
What does "Error: too many hops" mean?
Jawaban singkat: pesan ini perarti bahwa email tersebut mungkin mengalami
looping. Jika anda melihat ini setelah anda menyalakan Postfix content filtering,
maka anda telah melakukan kesalahan, yang menyebabkan email terfilter
berulangkali. Hal ini dapat disembuhkan dengan menggunakan secara tepat
dari content_filter=, header_checks=, and body_checks=.
Using UUCP over TCP
Subjek ini muncul manakala seseorang menanyakan tentang
solusi "domain in a mailbox". Untuk informasi awal, lihatlah
petunjuk dibawah ini.
Setting up an Internet to UUCP gateway
Berikut adalah cara bagaimana sebuah mesin yang berada pada internet
dan mengirimkan beberapa tetapi tidak semua non-local mail melalui UUCP.
lihatlah FAQ entry UUCP-only untuk mensetting
sebuah host UUCP-only.
/etc/postfix/transport:
some.domain uucp:uucp-host
.some.domain uucp:uucp-host
/etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport
/etc/postfix/master.cf:
uucp unix - n n - - pipe
flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
/etc/postfix/main.cf:
relay_domains = some.domain $mydestination ...
Using UUCP as the default transport
Berikut adalah cara untuk merelay semua email anda melalui
sebuah UUCP link. Lihatlah FAQ entry
Internet to UUCP untuk mensetup sebuah mesin gateway antara
UUCP dan SMTP.
/etc/postfix/main.cf:
relayhost = uucp-gateway
default_transport = uucp
/etc/postfix/master.cf:
uucp unix - n n - - pipe
flags=F user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
Sending mail to a FAX machine
Informasi berikut ini diberikan oleh Joerg Henne:
/etc/postfix/master.cf:
fax unix - n n - 1 pipe
flags= user=fax argv=/usr/bin/faxmail -d -n ${user}
/etc/postfix/transport:
fax.your.domain fax:localhost
/etc/postfix/main.cf:
transport_maps = hash:/etc/postfix/transport
fax_destination_recipient_limit = 1
Deleting a message from the Postfix queue
Perintah postsuper mempunyai pilihan untuk menghapus
file Postfix queue message. Untuk menghapus pesan dengan
queue id ABCDEF, mungkin bisa didapat dari mailq output,
satu yang mungkin digunakan:
# postsuper -d ABCDEF
# postsuper -d - < filename-with-queue-ids
Moving or restoring the Postfix queue
Sangatlah tidak aman untuk begitu saja menyalin file queue Postfix dari
satu file sistem (atau backup) ke file sistem yang lain. Alasannya adalah
nama file queue haruslah unik pada setiap direktori queue incoming,
active and deferred Postfix. Jika 2 file queue mempunyai
nama (dasar) yang sama, maka 1 dari file queue tersebut akan dihapus
pada saat file tersebut dipindahkan antar direktori queue.
Prosedur 1: Jika queue Postfix anda kosong, dan anda
menjalankan Postfix release 20010525 atau yang lebih baru
# postfix stop
# mailq
# cd /var/spool/postfix
...restore maildrop, incoming, active, deferred, defer, bounce here...
# postsuper
Prosedur 2: Queue Postfix anda tidak kosong, atau
anda menjalankan Posfix release 20010525 atau yang lebih lama
# postfix stop
# cd /var/spool/postfix/maildrop
...restore incoming, active, deferred here...
# find incoming active deferred -type f -exec mv '{}' . ';'
# rm -rf incoming active deferred
# postfix start
Undefined symbols: ___dn_expand, ___res_init etc.
Pertanyaan: Ketika saya membangun Postfix, saya mendapat
pesan error sebagai berikut:
ld: Undefined symbol
___dn_expand
___res_init
___res_search
*** Error code 1
make makefiles CCARGS="-I/usr/include".
Undefined symbols: dbm_pagfno, dbm_dirfno etc.
Pertanyaan: Ketika saya membangun Postfix saya mendapatkan
pesan error sebagai berikut:
Undefined first referenced
symbol in file
dbm_pagfno ../lib/libutil.a(dict_dbm.o)
dbm_dirfno ../lib/libutil.a(dict_dbm.o)
Using third-party DB libraries
dbm lama milik UNIX databse mempunyai beberapa keterbatasan
ketika anda mecoba untuk menyimpan sejumlah besar informasi.
Dia akan rusak ketika jumlah dari hash collisions menjadi begitu besar
sehingga masukan tidak cukup muat di dalam sebuah single disk block secara
bersamaan. Database yang lebih baru db tidak menderita
dengan keterbatasan ini. Sistem database ini adalah fitur standar pada
4.4BSD dan sistem linux.
IRIX problems translating IP address to string
Compaq mail blackhole problem
Pada beberapa sistem konfigurasi Compaq Tru64 UNIX, Postfix
akan menerima email dan kemudian tidak terjadi apa - apa. Email
bahkan tidak muncul dengan perintah mailq.
Too many connections
Pesan ini dihasilkan oleh MYSQL server. Anda perlu untuk
meningkatkan jumlah koneksi yang bisa ditangani. Hal yang perlu
dipikirkan: virtual and canonical maps diakses
oleh setiap proses smtpd and cleanup.
write queue file: No such file or directory
write queue file: Unknown error 4294967289
Reiserfs melaporkan wrong error code ketika sebuah pesan
melebihi setting message_size_limit. Sebagai hasilnya,
SMTP server Postfix melaporkan sebuah "queue file write error" kepada
SMTP client, daripada melaporkan sebuah kondisi "file too large". Klien akan
terus mengirim email yang sama terus menerus sampai email menjadi basi.
Up one level | Postfix FAQ