Ito ang command postfwd2 na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator
PROGRAMA:
NAME
postfwd2 - postfix firewall daemon
SINOPSIS
postfwd2 [OPSYON] [SOURCE1, SOURCE2, ...]
Ruleset: (kahit isa, maramihang paggamit ang pinapayagan):
-f, --file nagbabasa ng mga panuntunan mula sa
-r, --panuntunan nagdadagdag para i-config
-s, --score = nagbabalik kapag lumampas ang score
Server:
-i, --interface makinig sa interface
-p, --port makinig sa port
--proto uri ng socket (tcp o unix)
--server_socket hal. tcp:127.0.0.1:10045
-u, --gumagamit itakda ang uid sa user
-g, --pangkat itakda gid sa pangkat
--umask umask para sa master filepermissions
--server_umask umask para sa mga pahintulot ng file ng server
--pidfile lumikha ng pidfile sa ilalim
--min_servers
--max_servers ay naglalabas ng
--min_spare_servers
--max_spare_servers
cache:
-c, --cache itinatakda ang request-cache timeout sa segundo
--mga kahilingan sa paglilinis agwat ng paglilinis sa mga segundo para sa cache ng kahilingan
--cache_interface makinig sa interface
--cache_port makinig sa port
--cache_proto uri ng socket (tcp o unix)
--cache_socket hal. tcp:127.0.0.1:10043
--cache_umask umask para sa mga pahintulot ng file ng cache
--cacheid listahan ng mga item sa kahilingan para sa cache-id
--cache-rdomain-only laktawan ang recipient localpart para sa cache-id
--cache-no-sender laktawan ang address ng nagpadala para sa cache-id
--cache-no-size laki ng paglaktaw para sa cache-id
--no_parent_request_cache huwag paganahin ang cache ng kahilingan ng magulang
--no_parent_rate_cache huwag paganahin ang parent rate cache
--no_parent_dns_cache huwag paganahin ang parent dns cache (default)
--no_parent_cache huwag paganahin ang lahat ng parent cache
Mga Rate:
--mga rate ng paglilinis agwat ng paglilinis sa mga segundo para sa cache ng rate
control:
-k, --kill, --stop wakasan postfwd2
--reload, --hup reload postfwd2
--tagabantay watchdog timer sa ilang segundo
--respawn pagkaantala ng respawn sa ilang segundo
--mga pagkabigo max respawn failure counter
--mga demonyo listahan ng mga daemon na magsisimula
--dumpcache ipakita ang mga nilalaman ng cache
--dumpstats ay nagpapakita ng mga istatistika
-R, --chroot chroot sa bago magsimula
--delcache nag-aalis ng isang item mula sa cache ng kahilingan
--delrate nag-aalis ng isang item mula sa cache ng rate
DNS:
-n, --nodns laktawan ang anumang dns based na pagsubok
--dns_timeout
--dns_timeout_max i-
--dns_timeout_interval
--cache-rbl-timeout
--cache-rbl-default default na dns pattern kung hindi tinukoy sa ruleset
--cleanup-rbls
--dns_async_txt nagsasagawa ng dnsbl A at TXT lookup nang sabay-sabay
--dns_max_ns_lookups max names to look up with sender_ns_addrs
--dns_max_mx_lookups max names to look up with sender_mx_addrs
Opsyonal:
-t, --test testing, palaging nagbabalik ng "dunno"
-S, --summary
--noidlestats ay hindi pinapagana ang mga istatistika kapag idle
--norulestats ay hindi pinapagana ang bawat istatistika ng panuntunan
-I, --instantcfg ay nagre-reload ng rulesset sa bawat bagong kahilingan
--config_timeout
--keep_rates ay hindi nag-clear ng mga rate ng limit counter sa reload
--save_rate i-save at load rate ng mga limitasyon sa disk
--fast_limit_evaluation suriin ang mga limitasyon sa rate bago ma-parse ang ruleset
(pakitandaan ang mga limitasyon)
plugin:
--mga plugin naglo-load ng mga postfwd plugin mula sa file
Pagtotroso:
-l, --logname label para sa mga mensahe ng syslog
--facility use syslog facility
--socktype gumamit ng syslog socktype
--nodnslog huwag mag-log ng mga resulta ng dns
--anydnslog mag-log ng anumang mga resulta ng dns (kahit na naka-cache).
--norulelog ay hindi nag-log ng mga pagkilos ng panuntunan
--nolog|--perfmon walang pag-log sa lahat
-v, --verbose verbose logging, gumamit ng dalawang beses upang madagdagan
--debug na listahan ng mga klase sa pag-debug
Impormasyon (gamitin lamang sa command-line!):
-h, --help ipakita ang tulong na ito at lumabas
-m, --manual ay nagpapakita ng manwal ng programa
-V, --bersyon ng impormasyon sa bersyon ng output at paglabas
-D, --default ay nagpapakita ng mga setting ng postfwd2 at paglabas
-C, --showconfig ipakita ang postfwd2 ruleset at exit (-v pinapayagan)
-L, --stdout i-redirect ang mga mensahe ng syslog sa stdout
-q, --tahimik walang syslogging, walang stdout (-P gumagana para sa compatibility)
Hindi na ginagamit (para lamang sa pagiging tugma sa postfwd v1):
-d|--daemon, --shortlog, --dns_queuesize, --dns_retries
DESCRIPTION
PANIMULA
Ang postfwd2 ay isinulat upang pagsamahin ang kumplikadong mga paghihigpit sa postfix sa isang ruleset na katulad ng mga iyon
sa pinakamaraming firewall. Ginagamit ng program ang postfix policy delegation protocol para makontrol
access sa mail system bago matanggap ang isang mensahe (mangyaring bisitahin ang
<http://www.postfix.org/SMTPD_POLICY_README.html> para sa karagdagang impormasyon).
Ang postfwd2 ay nagpapahintulot sa iyo na pumili ng isang aksyon (hal., tanggihan, hindi alam) para sa isang kumbinasyon ng ilan
smtp na mga parameter (tulad ng address ng nagpadala at tatanggap, laki o TLS fingerprint ng kliyente).
Nag-aalok din ito ng mga simpleng macro/acls na dapat payagan ang diretso at madaling basahin
mga kumpigurasyon.
Mga tampok:
* Mga kumplikadong kumbinasyon ng mga parameter ng smtp
* Pinagsamang RBL/RHSBL lookup na may mga arbitrary na aksyon depende sa mga resulta
* Sistema ng pagmamarka
* Mga panuntunan batay sa petsa/oras
* Mga Macro/ACL, Mga Grupo, Negation
* Paghambingin ang mga katangian ng kahilingan (hal. client_name at helo_name)
* Panloob na pag-cache para sa mga kahilingan at dns lookup
* Built in statistics para sa pagsusuri sa kahusayan ng panuntunan
Configuration
Ang isang configuration line ay binubuo ng opsyonal na item=value pairs, na pinaghihiwalay ng mga semicolon (`;`)
at ang naaangkop na gustong aksyon:
[ = ; = ; ... ] aksyon=
Halimbawa:
client_address=192.168.1.1 ; nagpadala ==[protektado ng email] ; aksyon=TANGGILAN
Tatanggihan nito ang lahat ng mail mula sa 192.168.1.1 na may nagpadala ng sobre [protektado ng email]. Ang pagkakasunud-sunod ng
ang mga elemento ay hindi mahalaga. Kaya't ang mga sumusunod ay hahantong sa parehong resulta ng
nakaraang halimbawa:
action=REJECT ; client_address=192.168.1.1 ; nagpadala ==[protektado ng email]
Ang paraan kung paano inihahambing ang mga item sa kahilingan sa ruleset ay maaaring maimpluwensyahan sa mga sumusunod
paraan:
================================================== ==================
ITEM == VALUE true kung ang ITEM ay katumbas ng VALUE
ITEM => VALUE true kung ITEM >= VALUE
ITEM =< VALUE true kung ITEM <= VALUE
ITEM > VALUE true kung ITEM > VALUE
ITEM < VALUE true kung ITEM < VALUE
ITEM =~ VALUE true kung ITEM ~= /^VALUE$/i
ITEM != VALUE false kung ang ITEM ay katumbas ng VALUE
ITEM !> VALUE false kung ITEM >= VALUE
ITEM !< VALUE false kung ITEM <= VALUE
ITEM !~ VALUE false kung ITEM ~= /^VALUE$/i
ITEM = VALUE default na gawi (tingnan ang seksyon ng ITEMS)
================================================== ==================
Upang matukoy ang mga iisang panuntunan sa iyong mga log file, maaari kang magdagdag ng natatanging identifier para sa bawat isa
ito:
id=R_001 ; action=REJECT ; client_address=192.168.1.1 ; nagpadala ==[protektado ng email]
Maaari mong gamitin ang mga identifier na ito bilang target para sa `tumalon()` utos (tingnan ang seksyong ACTIONS
sa ibaba). Ang mga nangunguna o sumusunod na mga character na whitespace ay hindi papansinin. Gamitin ang '#' para magkomento sa iyong
pagsasaayos. Pahahalagahan ng iba.
Ang isang ruleset ay binubuo ng isa o maraming panuntunan, na maaaring i-load mula sa mga file o ipasa bilang
mga argumento ng command line. Pakitingnan ang seksyong COMMAND LINE sa ibaba para sa higit pang impormasyon sa
ang paksang ito
Dahil ang postfwd version 1.30 na mga panuntunan na sumasaklaw sa maraming linya ay maaaring tukuyin sa pamamagitan ng prefixing
ang mga sumusunod na linya na may isa o maramihang mga whitespace na character (o '}' para sa mga macro):
id=RULE001
client_address=192.168.1.0/24
nagpadala ==[protektado ng email]
action=REJECT walang access
Ang mga bersyon ng postfwd bago ang 1.30 ay nangangailangan ng trailing ';' at '\'-character:
id=RULE001; \
client_address=192.168.1.0/24; \
nagpadala ==[protektado ng email]; \
action=REJECT walang access
Mga item
id - isang natatanging rule id, na maaaring gamitin para sa pagsusuri ng log
Ang mga id ay nagsisilbi ring mga target para sa "jump" command.
petsa, oras - isang oras o hanay ng petsa sa loob ng tinukoy na panuntunan ang tatama
# FORMAT:
# Peb, ika-29
date = 29.02.2008/XNUMX/XNUMX
# Dis, ika-24 - ika-26
petsa=24.12.2008-26.12.2008
# mula ngayon hanggang Nob, 23
petsa=-23.09.2008
# mula Abril, ika-1 hanggang ngayon
petsa=01.04.2008-
araw, buwan - isang hanay ng mga karaniwang araw (Sun-Sab) o buwan (Ene-Dis)
sa loob ng tinukoy na panuntunan ay tatama
puntos - kapag natamaan ang tinukoy na marka (tingnan ang seksyong ACTIONS)
ang tinukoy na aksyon ay ibabalik sa postfix
ang mga marka ay itinakda sa buong mundo hanggang sa muling tukuyin!
request_score - ang halagang ito ay nagbibigay-daan sa isa na ma-access ang marka ng kahilingan. ito
maaaring gamitin bilang variable ($$request_score).
rbl, rhsbl, - i-query ang mga tinukoy na RBL/RHSBL, ang mga posibleng halaga ay:
rhsbl_client, [/ / , / / ]
rhsbl_sender, (mga default: reply=^127\.0\.0\.\d+$ maxcache=3600)
rhsbl_reverse_client ang mga resulta ng lahat ng rhsbl_* query ay pagsasamahin
sa rhsbl_count (tingnan sa ibaba).
rblcount, rhsblcount - pinakamababang RBL/RHSBL hitcount upang tumugma. kung hindi tinukoy
isang RBL/RHSBL hit ang tutugma sa rbl/rhsbl item.
maaari mong tukuyin ang 'lahat' upang suriin ang lahat ng mga item, at gamitin
ito bilang variable sa isang aksyon (tingnan ang seksyong ACTIONS)
(default: 1)
sender_localpart, - ang local-/domainpart ng address ng nagpadala
sender_domain
recipient_localpart, - ang local-/domainpart ng address ng tatanggap
recipient_domain
helo_address - sinusubukan ng postfwd2 na hanapin ang helo_name. gamitin
helo_address=!!(0.0.0.0/0) para tingnan kung hindi alam.
Mangyaring huwag gamitin ito para sa positibong kontrol sa pag-access
(whitelisting), dahil maaaring peke ito.
sender_ns_names, - sinusubukan ng postfwd2 na hanapin ang mga pangalan/ip address
sender_ns_addrs ng mga nameserver para sa bahagi ng domain ng nagpadala.
Mangyaring huwag gamitin ito para sa positibong kontrol sa pag-access
(whitelisting), dahil maaaring peke ito.
sender_mx_names, - sinusubukan ng postfwd2 na hanapin ang mga pangalan/ip address
sender_mx_addrs ng mga mx record para sa bahagi ng domain ng nagpadala.
Mangyaring huwag gamitin ito para sa positibong kontrol sa pag-access
(whitelisting), dahil maaaring peke ito.
bersyon - postfwd2 na bersyon, naglalaman ng "postfwd2 n.nn"
binibigyang-daan nito ang mga pagsusuri batay sa bersyon sa iyong mga ruleset
(hal para sa migration). gumagana din sa mga lumang bersyon,
dahil ang isang hindi umiiral na item ay palaging nagbabalik ng false:
# na bersyon >= 1.10
id=R01; bersyon~=1\.[1-9][0-9]; sender_domain==some.org \
; action=REJECT sorry walang access
ratecount - available lang para sa rate(), size() at rcpt() actions.
naglalaman ng aktwal na counter ng limitasyon:
id=R01; action=rate(nagpadala/200/600/REJECT na limitasyon na 200 ay lumampas sa [$$ratecount hit])
id=R02; action=rate(sender/100/600/WARN limit na 100 ang lumampas sa [$$ratecount hit])
Bukod sa mga ito maaari mong tukuyin ang anumang katangian ng postfix policy delegation protocol.
Huwag mag-atubiling pagsamahin ang mga ito sa paraang kailangan mo (tingnan ang seksyong MGA HALIMBAWA sa ibaba).
Karamihan sa mga halaga ay maaaring tukuyin bilang mga regular na expression (PCRE). Mangyaring tingnan ang talahanayan sa ibaba para sa
mga detalye:
# ================================================== =========
# ITEM=VALUE TYPE
# ================================================== =========
id=something mask = string
petsa=01.04.2007-22.04.2007 mask = petsa (DD.MM.YYYY-DD.MM.YYYY)
oras=08:30:00-17:00:00 mask = oras (HH:MM:SS-HH:MM:SS)
days=Mon-Wed mask = weekdays (Mon-Wed) o numeric (1-3)
buwan=Feb-Abr mask = buwan (Feb-Abr) o numeric (1-3)
score=5.0 mask = maximum na halaga ng floating point
rbl=zen.spamhaus.org mask = / / [,...]
rblcount=2 mask = numeric, tutugma kung tumama ang rbl >= 2
helo_address= maskara = CIDR[,CIDR,...]
sender_ns_names=some.domain.tld mask = PCRE
sender_mx_names=some.domain.tld mask = PCRE
sender_ns_addrs= maskara = CIDR[,CIDR,...]
sender_mx_addrs= maskara = CIDR[,CIDR,...]
# ------------------------------
# Postfix bersyon 2.1 at mas bago:
# ------------------------------
client_address= maskara = CIDR[,CIDR,...]
client_name=another.domain.tld mask = PCRE
reverse_client_name=another.domain.tld mask = PCRE
helo_name=some.domain.tld mask = PCRE
nagpadala=[protektado ng email] maskara = PCRE
tatanggap=[protektado ng email] maskara = PCRE
recipient_count=5 mask = numeric, ay tutugma kung ang mga tatanggap >= 5
# ------------------------------
# Postfix bersyon 2.2 at mas bago:
# ------------------------------
sasl_method=plain mask = PCRE
sasl_username=you mask = PCRE
sasl_sender= mask = PCRE
size=12345 mask = numeric, tutugma kung size >= 12345
ccert_subject=blackhole.nowhere.local mask = PCRE (kung na-verify lang)
ccert_issuer=John+20Doe mask = PCRE (kung na-verify lang)
ccert_fingerprint=AA:BB:CC:DD:EE:... mask = PCRE (HUWAG gumamit ng "..." dito)
# ------------------------------
# Postfix bersyon 2.3 at mas bago:
# ------------------------------
encryption_protocol=TLSv1/SSLv3 mask = PCRE
encryption_cipher=DHE-RSA-AES256-SHA mask = PCRE
encryption_keysize=256 mask = numeric, tutugma kung keysize >= 256
...
ang kasalukuyang listahan ay matatagpuan sahttp://www.postfix.org/SMTPD_POLICY_README.html>. Pakiusap
basahin nang mabuti ang tungkol sa kung aling katangian ang maaaring gamitin sa kung aling antas ng transaksyon sa smtp
(hal. ang laki ay gagana lamang nang mapagkakatiwalaan sa antas ng END-OF-MESSAGE). Ang pagtutugma ng pattern ay
ginawang case insensitive.
Ang maraming paggamit ng parehong item ay pinapayagan at ihahambing bilang lohikal na OR, na nangangahulugang iyon
ito ay gagana gaya ng inaasahan:
id=TRUST001; aksyon=OK; encryption_keysize=64
ccert_fingerprint=11:22:33:44:55:66:77:88:99
ccert_fingerprint=22:33:44:55:66:77:88:99:00
ccert_fingerprint=33:44:55:66:77:88:99:00:11
sender=@domain\.local$
client_address, rbl at rhsbl item ay maaari ding tukuyin bilang whitespace-o-comma-separated
mga halaga:
id=SKIP01; action=ewan
client_address=192.168.1.0/24, 172.16.254.23
id=SKIP02; action=ewan
client_address= 10.10.3.32 10.216.222.0/27
Ang mga sumusunod na item ay dapat na natatangi:
id, minimum at maximum na halaga, rblcount at rhsblcount
Anumang item ay maaaring kontrahin sa pamamagitan ng naunang '!!' dito, hal:
id=HOST001 ; hostname == !!secure.trust.local ; action=REJECT only secure.trust.local please
o gamit ang tamang operator ng paghahambing:
id=HOST001 ; hostname != secure.trust.local ; action=REJECT only secure.trust.local please
Upang maiwasan ang pagkalito sa mga regexp o para lamang sa mas mahusay na visibility maaari mong gamitin ang '!!(...)':
id=USER01 ; sasl_username =~ !!( /^(bob|alice)$/ ); action=REJECT sino yan?
Ang mga katangian ng kahilingan ay maaaring ihambing sa pamamagitan ng naunang mga character na '$$', hal:
id=R-003 ; client_name = !! $$helo_name ; action=WARN helo ay hindi tumutugma sa DNS
# o
id=R-003 ; client_name = !!($$(helo_name)) ; action=WARN helo ay hindi tumutugma sa DNS
Ito ay may bisa lamang para sa mga halaga ng PCRE (tingnan ang listahan sa itaas). Ang paghahambing ay isasagawa bilang
case insensitive eksaktong tugma. Gamitin ang opsyong '-vv' para i-debug.
Ire-reset ang mga espesyal na item na ito para sa anumang bagong panuntunan:
rblcount - naglalaman ng bilang ng mga sagot sa RBL
rhsblcount - naglalaman ng bilang ng mga sagot sa RHSBL
mga tugma - naglalaman ng bilang ng mga katugmang item
dnsbltext - naglalaman ng dns TXT na bahagi ng lahat ng RBL at RHSBL na tugon sa form
rbltype:rblname: ; rbltype:rblname: ; ...
Ang mga espesyal na item na ito ay babaguhin para sa anumang pagtutugma ng panuntunan:
request_hits - naglalaman ng mga id ng lahat ng tumutugmang panuntunan
Nangangahulugan ito na maaaring kailanganin na i-save ang mga ito, kung plano mong gamitin ang mga halagang ito sa
mga susunod na tuntunin:
# set vals
id=RBL01 ; rhsblcount=lahat; rblcount=lahat
action=set(HIT_rhls=$$rhsblcount,HIT_rbls=$$rblcount,HIT_txt=$$dnsbltext)
rbl=list.dsbl.org, bl.spamcop.net, dnsbl.sorbs.net, zen.spamhaus.org
rhsbl_client=rddn.dnsbl.net.au, rhsbl.ahbl.org, rhsbl.sorbs.net
rhsbl_sender=rddn.dnsbl.net.au, rhsbl.ahbl.org, rhsbl.sorbs.net
# ihambing
id=RBL02 ; HIT_rhls>=1 ; HIT_rbls>=1 ; action=554 5.7.1 na-block gamit ang $$HIT_rhls RHSBLs at $$HIT_rbls RBLs [INFO: $$HIT_txt]
id=RBL03 ; HIT_rhls>=2 ; action=554 5.7.1 na-block gamit ang $$HIT_rhls RHSBLs [INFO: $$HIT_txt]
id=RBL04 ; HIT_rbls>=2 ; action=554 5.7.1 na-block gamit ang $$HIT_rbls RBLs [INFO: $$HIT_txt]
MGA FILE
Dahil ang postfwd1 v1.15 at postfwd2 v0.18 mahabang listahan ng item ay maaaring iimbak sa magkahiwalay na mga file:
id=R001 ; ccert_fingerprint==file:/etc/postfwd/wl_ccerts ; aksyon=DUNNO
Ang postfwd2 ay magbabasa ng isang listahan ng mga item (isang item sa bawat linya) mula sa /etc/postfwd/wl_ccerts.
pinapayagan ang mga komento:
# kliyente1
11:22:33:44:55:66:77:88:99
# kliyente2
22:33:44:55:66:77:88:99:00
# kliyente3
33:44:55:66:77:88:99:00:11
Upang magamit ang mga kasalukuyang talahanayan sa key=value format, maaari mong gamitin ang:
id=R001 ; ccert_fingerprint==table:/etc/postfwd/wl_ccerts ; aksyon=DUNNO
Babalewalain nito ang kanang-kamay na halaga. Maaaring ihalo ang mga item:
id=R002 ; aksyon=TANGGILAN
client_name==hindi kilala
client_name==file:/etc/postfwd/blacklisted
at para sa mga bagay na hindi pcre (pinaghihiwalay ng kuwit):
id=R003 ; aksyon=TANGGILAN
client_address==10.1.1.1, file:/etc/postfwd/blacklisted
id=R004 ; aksyon=TANGGILAN
rbl=myrbl.home.local, zen.spamhaus.org, file:/etc/postfwd/rbls_changing
Maaari mong suriin ang iyong configuration gamit ang --show_config na opsyon sa command line:
# postfwd2 --showconfig --rule='action=DUNNO; client_address=10.1.0.0/16, file:/etc/postfwd/wl_clients, 192.168.2.1'
dapat magbigay ng isang bagay tulad ng:
Panuntunan 0: id->"R-0"; aksyon->"DUNNO"; client_address->"=;10.1.0.0/16, =;194.123.86.10, =;186.4.6.12, =;192.168.2.1"
Kung ang isang file ay hindi mabasa, ito ay hindi papansinin:
# postfwd2 --showconfig --rule='action=DUNNO; client_address=10.1.0.0/16, file:/etc/postfwd/wl_clients, 192.168.2.1'
[babala sa LOG]: error: hindi nahanap ang file /etc/postfwd/wl_clients - babalewalain ang file?
Panuntunan 0: id->"R-0"; aksyon->"DUNNO"; client_address->"=;10.1.0.0/16, =;192.168.2.1"
Ang mga item sa file ay sinusuri sa yugto ng pagsasaayos. Samakatuwid ang postfwd2 ay kailangang i-reload
kung ang isang file ay nagbago
Kung gusto mong tukuyin ang isang file, iyon ay ire-reload para sa bawat kahilingan, maaari mong gamitin ang lfile:
at ltable:
id=R001; client_address=lfile:/etc/postfwd/client_whitelist; action=ewan
Susuriin nito ang oras ng pagbabago ng /etc/postfwd/client_whitelist tuwing may panuntunan
ay sinusuri at i-reload ito kung kinakailangan. Siyempre ito ay maaaring tumaas ang pag-load ng system, kaya
mangyaring gamitin ito nang may pag-iingat.
Ang --showconfig na opsyon ay naglalarawan ng pagkakaiba:
## nasuri sa yugto ng pagsasaayos
# postfwd2 --nodaemon -L --rule='client_address=table:/etc/postfwd/clients; action=ewan' -C
Panuntunan 0: id->"R-0"; aksyon->"ewan"; client_address->"=;1.1.1.1, =;1.1.1.2, =;1.1.1.3"
## nasuri para sa anumang rulehit
# postfwd2 --nodaemon -L --rule='client_address=ltable:/etc/postfwd/clients; action=ewan' -C
Panuntunan 0: id->"R-0"; aksyon->"ewan"; client_address->"=;ltable:/etc/postfwd/clients"
Ang mga file ay maaaring sumangguni sa iba pang mga file. Ang sumusunod ay wasto.
-- FILE /etc/postfwd/rules.cf --
id=R01; client_address=file:/etc/postfwd/clients_master.cf; aksyon=DUNNO
-- FILE /etc/postfwd/clients_master.cf --
192.168.1.0/24
file:/etc/postfwd/clients_east.cf
file:/etc/postfwd/clients_west.cf
-- FILE /etc/postfwd/clients_east.cf --
192.168.2.0/24
-- FILE /etc/postfwd/clients_west.cf --
192.168.3.0/24
Tandaan na kasalukuyang walang loop detection (/a/file calls /a/file) at ito
Available lang ang feature sa postfwd1 v1.15 at postfwd2 v0.18 at mas mataas.
MGA PAGKILOS
Pangkalahatan
Isasagawa ang mga aksyon, kapag ang lahat ng item ng panuntunan ay tumugma sa isang kahilingan (o kahit isa lang sa
anumang listahan ng item). Maaari kang sumangguni sa mga attribute ng kahilingan sa pamamagitan ng unahan ng $$ character, tulad ng:
id=R-003; client_name = !!$$helo_name; action=WARN helo '$$helo_name' ay hindi tumutugma sa DNS '$$client_name'
# o
id=R-003; client_name = !!$$helo_name; action=WARN helo '$$(helo_name)' ay hindi tumutugma sa DNS '$$(client_name)'
postfix pagkilos
Ang mga aksyon ay sasagutin sa postfix bilang resulta sa mga kahilingan sa pagtatalaga ng patakaran. Anumang aksyon
na naiintindihan ng postfix ay pinapayagan - tingnan ang "man 5 access" o
<http://www.postfix.org/access.5.html> para sa isang paglalarawan. Kung walang aksyon na tinukoy, ang
postfix WARN aksyon na nagla-log lang sa kaganapan ay gagamitin para sa kaukulang panuntunan.
Ang postfwd2 ay babalik dunno kung naabot na nito ang dulo ng ruleset at walang panuntunan
tugma. Mababago ito sa pamamagitan ng paglalagay ng huling panuntunan na naglalaman lamang ng pahayag ng aksyon:
...
action=ewan ; [protektado ng email] # sender ay ok
action=reject # default deny
postfwd2 pagkilos
kinokontrol ng mga pagkilos ng postfwd2 ang pag-uugali ng programa. Sa kasalukuyan maaari mong tukuyin ang
sumusunod:
tumalon ( )
tumalon upang mamuno gamit ang id , gamitin ito para laktawan ang ilang partikular na panuntunan.
maaari kang tumalon pabalik - ngunit tandaan na walang loop
detection sa ngayon! ang mga paglukso sa mga hindi umiiral na id ay lalaktawan.
puntos ( )
ang marka ng kahilingan ay mababago ng tinukoy ,
na dapat ay isang floating point value. ang modificator ay maaaring alinman
Ang +n.nn ay nagdaragdag ng n.nn sa kasalukuyang marka
-n.nn sustracts n.nn mula sa kasalukuyang iskor
*n.nn multiply ang kasalukuyang marka sa n.nn
Hinahati ng /n.nn ang kasalukuyang marka sa n.nn
=n.nn itinatakda ang kasalukuyang marka sa n.nn
kung ang marka ay lumampas sa maximum na itinakda ng `--scores` na opsyon (tingnan
COMMAND LINE) o ang item ng puntos (tingnan ang seksyon ng ITEMS), ang aksyon
ibabalik ang tinukoy para sa kasong ito (default: 5.0=>"TANGGILAN ang marka ng postfwd2 na lumampas").
itakda ( = , = ,...)
binibigyang-daan ka ng command na ito na ipasok o i-override ang mga attribute ng kahilingan, na maaaring
kumpara sa iyong karagdagang ruleset. gamitin ito upang pabilisin ang paulit-ulit na paghahambing sa malalaking listahan ng item.
pakitingnan ang seksyong MGA HALIMBAWA para sa higit pang impormasyon. maaari mong paghiwalayin ang maramihang key=value pairs
sa pamamagitan ng "," mga character.
rate ( / / / )
ang utos na ito ay lumilikha ng isang counter para sa ibinigay , na tataas anumang oras ng kahilingan
na naglalaman nito ay dumating. kung ito ay lumampas sa loob ng segundo ay babalik ito sa postfix.
ang mga rate ng counter ay napakabilis dahil ang mga ito ay isinasagawa bago ang ruleset ay na-parse.
mangyaring tandaan na ay limitado sa mga pagkilos na postfix (walang mga pagkilos na postfwd) para sa mga bersyon ng postfwd <1.33!
# hindi hihigit sa 3 kahilingan bawat 5 minuto
# mula sa parehong "hindi kilalang" kliyente
id=RATE01 ; client_name==hindi kilala
action=rate(client_address/3/300/450 4.7.1 paumanhin, max 3 kahilingan kada 5 minuto)
laki ( / / / )
gumagana ang command na ito katulad ng rate() command na may pagkakaiba, na ang rate counter ay
nadagdagan ng attribute ng laki ng kahilingan. para magawa ito nang mapagkakatiwalaan dapat kang tumawag sa postfwd2 mula sa
smtpd_end_of_data_restrictions. kung gusto mong makatiyak, maaari mong suriin ito sa loob ng ruleset:
# limitasyon sa laki na 1.5mb bawat oras bawat kliyente
id=SIZE01 ; protocol_state==END-OF-MESSAGE ; client_address==!!(10.1.1.1)
action=size(client_address/1572864/3600/450 4.7.1 sorry, max 1.5mb kada oras)
rcpt ( / / / )
gumagana ang command na ito katulad ng rate() command na may pagkakaiba, na ang rate counter ay
nadagdagan ng katangian ng recipient_count ng kahilingan. para magawa ito nang mapagkakatiwalaan dapat kang tumawag sa postfwd
mula sa smtpd_data_restrictions o smtpd_end_of_data_restrictions. kung gusto mong makasigurado, kaya mo
suriin ito sa loob ng ruleset:
# limitasyon sa bilang ng tatanggap na 3 bawat oras bawat kliyente
id=RCPT01 ; protocol_state==END-OF-MESSAGE ; client_address==!!(10.1.1.1)
action=rcpt(client_address/3/3600/450 4.7.1 sorry, max 3 recipient kada oras)
rate5321, laki5321, rcpt5321 ( / / / )
katulad ng kaukulang non-5321 function, na may pagkakaiba na ang localpart ng
ang mga address ng sender oder recipient ay sinusuri na case-sensitive ayon sa rfc5321. yun
nangangahulugan na ang mga kahilingan mula sa [protektado ng email] at [protektado ng email] iba ang pagtrato
magtanong ( : [: ])
nagbibigay-daan sa isa na italaga ang desisyon sa patakaran sa isa pang serbisyo ng patakaran (hal. postgrey). ang una
at ang pangalawang argumento (address at port) ay sapilitan. ang ikatlong opsyonal na argumento ay maaaring
tinukoy upang sabihin sa postfwd2 na huwag pansinin ang ilang mga sagot at magpatuloy sa pag-parse ng ruleset:
# example1: i-query ang postgrey at ibalik ang sagot nito sa postfix
id=GREY; client_address==10.1.1.1; action=ask(127.0.0.1:10031)
# example2: query postgrey ngunit huwag pansinin ang sagot nito, kung tumutugma ito sa 'DUNNO'
# at ipagpatuloy ang pag-parse ng ruleset ng postfwd
id=GREY; client_address==10.1.1.1; action=ask(127.0.0.1:10031:^dunno$)
mail(server/helo/from/to/subject/body)
Hindi na ginagamit ang utos na ito. Dapat mong subukang gamitin ang sendmail() na aksyon sa halip.
Napakapangunahing utos ng mail, na nagpapadala ng mensahe kasama ang mga ibinigay na argumento. MGA LIMITASYON:
Ito ay karaniwang gumaganap ng isang telnet. Walang authentication o TLS na available. Bukod pa rito ay ginagawa nito
hindi subaybayan ang estado ng notification at aabisuhan ka anumang oras, tumama ang kaukulang panuntunan.
sendmail(sendmail-path::from::to::subject::body)
Mail command, na gumagamit ng isang umiiral na binary ng sendmail at nagpapadala ng mensahe na may mga ibinigay na argumento.
LIMITASYON: Hindi sinusubaybayan ng command ang estado ng notification at aabisuhan ka anumang oras, ang
kaukulang mga hit ng panuntunan (na maaaring mangahulugan ng 100 mail para sa isang mail na may 100 tatanggap sa yugto ng RCPT).
maghintay ( )
i-pause ang pagpapatupad ng programa para sa segundo. gamitin ito para sa
pagkaantala o pag-throtteling ng mga koneksyon.
tandaan ( )
i-log lamang ang ibinigay na string at patuloy na i-parse ang ruleset.
kung walang laman ang string, walang mai-log (noop).
huminto ( )
tinatapos ang programa gamit ang ibinigay na exit-code. ang postfix ay hindi
sobra-sobra, kaya gamitin ito nang may pag-iingat.
Maaari kang sumangguni sa humiling ng mga katangian, tulad ng
id=R-HELO ; helo_name=^[^\.]+$ ; action=REJECT invalid helo '$$helo_name'
MACROS/ACLS
Ang maraming paggamit ng mahahabang item o kumbinasyon ng mga ito ay maaaring paikliin ng mga macro. Yung
dapat na prefix ng '&&' (dalawang '&' na character). Una ang mga macro ay kailangang tukuyin bilang
sumusunod:
&&RBLS { rbl=zen.spamhaus.org,list.dsbl.org,bl.spamcop.net,dnsbl.sorbs.net,ix.dnsbl.manitu.net; };
Pagkatapos ay maaaring gamitin ang mga ito sa iyong mga panuntunan, tulad ng:
&&RBLS ; client_name=^unknown$ ; aksyon=TANGGILAN
&&RBLS ; client_name=(\d+[\.-_]){4} ; aksyon=TANGGILAN
&&RBLS ; client_name=[\.-_](adsl|dynamic|ppp|)[\.-_] ; aksyon=TANGGILAN
Ang mga macro ay maaaring maglaman ng mga aksyon, masyadong:
# kahulugan
&&GONOW { action=REJECT your request cause our spam detection policy to reject this message. Higit pang impormasyon sa http://www.domain.local; };
# panuntunan
&&ALIS NA ; &&RBLS ; client_name=^unknown$
&&ALIS NA ; &&RBLS ; client_name=(\d+[\.-_]){4}
&&ALIS NA ; &&RBLS ; client_name=[\.-_](adsl|dynamic|ppp|)[\.-_]
Ang mga macro ay maaaring maglaman din ng mga macro:
# kahulugan
&&RBLS{
rbl=zen.spamhaus.org
rbl=list.dsbl.org
rbl=bl.spamcop.net
rbl=dnsbl.sorbs.net
rbl=ix.dnsbl.manitu.net
};
&&DYNAMIC{
client_name=^unknown$
client_name=(\d+[\.-_]){4}
client_name=[\.-_](adsl|dynamic|ppp|)[\.-_]
};
&&GOAWAY { &&RBLS; &&DYNAMIC; };
# panuntunan
&&UMALIS KA ; action=REJECT dynamic client at nakalista sa RBL
Karaniwang ang mga macro ay mga simpleng pagpapalit ng teksto - tingnan ang seksyong "PARSER" para sa higit pa
impormasyon.
PLUGINS
paglalarawan
Binibigyang-daan ka ng interface ng plugin na tukuyin ang iyong sariling mga tseke at pahusayin ang mga postfwd's
functionality. Huwag mag-atubiling magbahagi ng mga kapaki-pakinabang na bagay!
babala
Tandaan na ang interface ng plugin ay nasa devel stage pa rin. Pakisubukan ang iyong mga plugin
maingat, dahil ang mga pagkakamali ay maaaring maging sanhi ng pagkasira ng postfwd! Pinapayagan din itong i-override
attribute o built-in na function, ngunit siguraduhing alam mo kung ano ang iyong ginagawa dahil ang ilan sa
ang mga ito ay ginagamit sa loob.
Pakitandaan ang seguridad, kapag nag-access ka ng mga makabuluhang mapagkukunan at hindi kailanman, kailanman tatakbo
postfwd bilang privileged user! Huwag ding magtiwala sa iyong input (lalo na ang mga hostname, at e-mail
mga address).
Mga item
Ang mga plugin ng item ay mga subroutine ng perl na nagsasama ng mga karagdagang katangian sa mga kahilingan noon
sinusuri ang mga ito laban sa mga ruleset ng postfwd tulad ng anumang iba pang item ng delegasyon ng patakaran
protocol. Nagbibigay-daan ito sa iyo na lumikha ng sarili mong mga tseke.
ang mga plugin-item ay hindi maaaring gamitin nang pili. ang mga function na ito ay isasagawa para sa bawat kahilingan
natatanggap ng postfwd, kaya tandaan ang pagganap.
SYNOPSIS: %result = postfwd_items_plugin{ }(%hiling)
nangangahulugan na ang iyong subroutine, ay tinawag , ay may access sa isang hash na tinatawag na %request, na
naglalaman ng lahat ng attribute ng kahilingan, tulad ng $request{client_name} at dapat magbalik ng value sa
sumusunod na form:
i-save: $result{ } =
lumilikha ito ng bagong item naglalaman ng , na isasama sa
kahilingan sa delegasyon ng patakaran at samakatuwid ay maaaring gamitin sa mga patakaran ng postfwd.
# HUWAG tanggalin ang susunod na linya
%postfwd_items_plugin = (
# EXAMPLES - isinama sa postfwd. hindi na kailangang i-activate ang mga ito dito.
# ay nagbibigay-daan sa isa na suriin ang postfwd na bersyon sa ruleset
"bersyon" => sub {
my(%request) = @_;
my(%resulta) = (
"bersyon" => $NAME." ".$VERSION,
);
ibalik ang %resulta;
},
# sender_domain at recipient_domain
"address_parts" => sub {
my(%request) = @_;
my(%resulta) = ();
$request{sender} =~ /@([^@]*)$/;
$result{sender_domain} = ($1 || '');
$request{recipient} =~ /@([^@]*)$/;
$result{recipient_domain} = ($1 || '');
ibalik ang %resulta;
},
# HUWAG tanggalin ang susunod na linya
);
Ihambing
Nagbibigay-daan sa iyo ang paghahambing ng mga plugin na tukuyin kung paano dapat ihambing ang iyong mga bagong item sa ruleset.
Ang mga ito ay opsyonal. Kung hindi ka tumukoy ng isa, ang default (== para sa eksaktong tugma, =~ para sa
PCRE, ...) ang gagamitin.
SYNOPSIS: => sub { return &{$postfwd_compare{ }}(@_); },
# HUWAG tanggalin ang susunod na linya
%postfwd_compare_plugin = (
MGA HALIMBAWA - isinama sa postfwd. hindi na kailangang i-activate ang mga ito dito.
# Simpleng halimbawa
# SYNOPSIS: = (ibalik &{$postfwd_compare{ }}(@_))
"client_address" => sub { return &{$postfwd_compare{cidr}}(@_); },
"size" => sub { return &{$postfwd_compare{numeric}}(@_); },
"recipient_count" => sub { return &{$postfwd_compare{numeric}}(@_); },
# Kumplikadong halimbawa
# SYNOPSIS: = ( , , , )
"numeric" => sub {
my($cmp,$val,$myitem,%request) = @_;
my($myresult) = undef; $myitem ||= "0"; $val ||= "0";
kung ($cmp eq '==') {
$myresult = ($myitem == $val);
} elsif ($cmp eq '=<') {
$myresult = ($myitem <= $val);
} elsif ($cmp eq '=>') {
$myresult = ($myitem >= $val);
} elsif ($cmp eq '<') {
$myresult = ($myitem < $val);
} elsif ($cmp eq '>') {
$myresult = ($myitem > $val);
} elsif ($cmp eq '!=') {
$myresult = hindi($myitem == $val);
} elsif ($cmp eq '!<') {
$myresult = hindi($myitem <= $val);
} elsif ($cmp eq '!>') {
$myresult = hindi($myitem >= $val);
} Iba pa {
$myresult = ($myitem >= $val);
};
ibalik ang $myresult;
},
# HUWAG tanggalin ang susunod na linya
);
MGA PAGKILOS
Nagbibigay-daan ang mga action plugin na tumukoy ng mga bagong postfwd na aksyon. Sa pamamagitan ng pagtatakda ng $stop-flag magagawa mo
magpasya na magpatuloy o huminto sa pag-parse ng ruleset.
SYNOPSIS: ( , , , , ) =
( , , , , , )
# HUWAG tanggalin ang susunod na linya
%postfwd_actions_plugin = (
# EXAMPLES - isinama sa postfwd. hindi na kailangang i-activate ang mga ito dito.
# tala( ) utos
"tala" => sub {
my($index,$now,$mycmd,$myarg,$myline,%request) = @_;
my($myaction) = 'hindi ko alam'; my($stop) = 0;
log_info "[RULES] ".$myline." - tandaan: ".$myarg kung $myarg;
return ($stop,$index,$myaction,$myline,%request);
},
# paglaktaw sa susunod mga tuntunin
"laktawan" => sub {
my($index,$now,$mycmd,$myarg,$myline,%request) = @_;
my($myaction) = 'hindi ko alam'; my($stop) = 0;
$index += $myarg if ($myarg and not(($index + $myarg) > $#Rules) );
return ($stop,$index,$myaction,$myline,%request);
},
# nagtatapon ng mga nilalaman ng kasalukuyang kahilingan sa syslog
"dumprequest" => sub {
my($index,$now,$mycmd,$myarg,$myline,%request) = @_;
my($myaction) = 'hindi ko alam'; my($stop) = 0;
mapa { log_info "[DUMP] rule=$index, Attribute: $_=$request{$_}" } (keys %request);
return ($stop,$index,$myaction,$myline,%request);
},
# HUWAG tanggalin ang susunod na linya
);
COMMAND LINE
Itakda ang panuntunan
Ang mga sumusunod na argumento ay ginagamit upang tukuyin ang pinagmulan ng postfwd2 ruleset. Ibig sabihin nito
na kahit isa sa mga sumusunod ay kinakailangan para gumana ang postfwd2.
-f, --file
Nagbabasa ng mga panuntunan mula sa . Pakitingnan ang seksyong CONFIGURATION
sa ibaba para sa karagdagang impormasyon.
-r, --panuntunan
Nagdadagdag sa ruleset. Tandaan na maaaring kailanganin mong mag-quote
mga string na naglalaman ng mga whitespace o shell character.
Scoring
-s, --score =
Nagbabalik sa postfix, kapag lumampas ang marka ng kahilingan
Pinapayagan ang maramihang paggamit. I-chain lang ang iyong mga argumento, tulad ng:
postfwd2 -r " = ;aksyon= " -f -f ...
or
postfwd2 --scores 4.5="WARN high score" --scores 5.0="REJECT postfwd2 score too high" ...
Sa kaso ng maramihang mga marka, ang pinakamataas na tugma ay bibilangin. Ang pagkakasunud-sunod ng mga argumento ay
makikita sa postfwd2 ruleset.
Networking
Ang postfwd2 ay maaaring patakbuhin bilang daemon upang ito ay makinig sa network para sa mga papasok na kahilingan.
Ang mga sumusunod na argumento ay makokontrol sa pag-uugali nito sa kasong ito.
-d, --demonyo
Ang postfwd2 ay tatakbo bilang daemon at makikinig sa network para sa papasok
mga query (default 127.0.0.1:10045).
-i, --interface
Itali ang postfwd2 sa tinukoy na interface (default 127.0.0.1).
-p, --port
Ang postfwd2 ay nakikinig sa tinukoy na port (default na tcp/10045).
--proto
Ang uri ng protocol para sa postfwd's socket. Sa kasalukuyan maaari mong gamitin ang 'tcp' o 'unix' dito.
Upang gamitin ang postfwd2 na may unix domain socket, patakbuhin ito bilang sumusunod:
postfwd2 --proto=unix --port=/somewhere/postfwd.socket
-u, --gumagamit
Binabago ang tunay at epektibong user sa .
-g, --pangkat
Binabago ang tunay at epektibong grupo sa .
--umask
Binabago ang umask para sa mga filepermission ng master process (pidfile).
Pansin: Ito ay umask, hindi chmod - kailangan mong tukuyin ang mga piraso na iyon
HINDI dapat mag-apply. Hal: ang umask 077 ay katumbas ng chmod 700.
--cache_umask
Binabago ang umask para sa mga filepermission ng proseso ng cache (unix domain socket).
--server_umask
Binabago ang umask para sa mga filepermission ng proseso ng server (unix domain socket).
-R, --chroot
Chroot ang proseso sa tinukoy na landas.
Tingnan nyo po http://postfwd.org/postfwd2-chroot.html bago gamitin!
--pidfile
Ise-save ang process id sa tinukoy na file.
--pasilidad
nagtatakda ng pasilidad ng syslog, ang default ay 'mail'
--socktype
itinatakda ang Sys::Syslog socktype sa 'native', 'inet' o 'unix'.
Default ay ang auto-detect ito depende sa bersyon ng module at os.
-l, --logname
Nilagyan ng label ang mga mensahe ng syslog. Kapaki-pakinabang kapag nagpapatakbo ng maramihang
mga pagkakataon ng postfwd.
--loglen
Pinutol ang anumang mensahe ng syslog pagkatapos mga karakter.
Plugins
--mga plugin
Naglo-load ng mga postfwd plugin mula sa file. Mangyaring tingnan http://postfwd.org/postfwd.plugins
o ang plugins.postfwd.sample na available mula sa tarball para sa higit pang impormasyon.
Opsyonal argumento
Ang mga parameter na ito ay nakakaimpluwensya sa paraan ng paggana ng postfwd2. Ang alinman sa mga ito ay maaaring pagsamahin.
-v, --verbose
Ang verbose logging ay nagpapakita ng maraming kapaki-pakinabang na impormasyon ngunit maaaring magdulot
ang iyong mga logfile ay lumago nang kapansin-pansin. Kaya gamitin ito nang may pag-iingat. Itakda ang opsyon
dalawang beses (-vv) upang makakuha ng higit pang impormasyon (nag-log sa lahat ng mga katangian ng kahilingan).
-c, --cache (default=600)
Timeout para sa cache ng kahilingan, ang mga resulta para sa magkatulad na mga kahilingan ay magiging
naka-cache hanggang sa ma-reload ang config o sa pagkakataong ito (sa mga segundo) ay mag-expire.
Hindi pinapagana ng setting na 0 ang feature na ito.
--cache-walang-laki
Binabalewala ang katangian ng laki para sa mga paghahambing ng cache na hahantong sa mas mahusay
mga rate ng cache-hit. Dapat mong itakda ang opsyong ito, kung hindi mo gagamitin ang laki
item sa iyong ruleset.
--cache-no-sender
Binabalewala ang address ng nagpadala para sa mga paghahambing ng cache na hahantong sa mas mahusay
mga rate ng cache-hit. Dapat mong itakda ang opsyong ito, kung hindi mo ginagamit ang nagpadala
item sa iyong ruleset.
--cache-rdomain-lamang
Aalisin nito ang lokal na bahagi ng address ng tatanggap bago punan ang
cache. Ito ay maaaring makabuluhang tumaas ang mga rate ng cache-hit.
--cache-rbl-timeout (default=3600)
Gagamitin ang default na value na ito bilang timeout sa ilang segundo para sa mga item sa rbl cache,
kung hindi tinukoy sa ruleset.
--cache-rbl-default (default=^127\.0\.0\.\d+$)
Mga tugma sa rbl/rhsbl na mga sagot (regexp) kung hindi tinukoy sa ruleset.
--cacheid , ,...
Ang csv-separated list na ito ng mga attribute ng kahilingan ay gagamitin sa pagbuo
ang request cache identifier. Gamitin lamang ito, kung alam mo nang eksakto kung ano ka
ginagawa. Kung ikaw, halimbawa, gumamit lamang ng postfwd2 para sa kontrol ng RBL/RHSBL,
maaari mong itakda ito sa
postfwd2 --cache=3600 --cacheid=client_name, client_address
Pinatataas nito ang kahusayan ng pag-cache at pinapabuti ang pagganap ng postfwd.
Babala: Dapat mong ilista ang lahat ng item dito, na ginagamit sa iyong ruleset!
--mga kahilingan sa paglilinis (default=600)
Ang cache ng kahilingan ay hahanapin para sa mga naka-time out na item pagkatapos nito sa
segundo. Ito ay isang minimum na halaga. Ang proseso ng paglilinis ay magaganap lamang, kapag
dumating ang isang bagong kahilingan.
--paglilinis-rbls (default=600)
Ang cache ng rbl ay hahanapin para sa mga naka-time out na item pagkatapos nito sa
segundo. Ito ay isang minimum na halaga. Ang proseso ng paglilinis ay magaganap lamang, kapag
dumating ang isang bagong kahilingan.
--mga rate ng paglilinis (default=600)
Ang cache ng rate ay hahanapin para sa mga naka-time out na item pagkatapos nito sa
segundo. Ito ay isang minimum na halaga. Ang proseso ng paglilinis ay magaganap lamang, kapag
dumating ang isang bagong kahilingan.
-S, --buod (default=600)
Nagpapakita ng ilang istatistika ng paggamit (uptime ng programa, counter ng kahilingan, mga panuntunan sa pagtutugma)
bawat segundo. Ang opsyong ito ay kasama ng -v switch.
Ginagamit ng feature na ito ang signal ng alarma, kaya maaari mong pilitin ang postfwd2 na i-dump ang mga istatistika
gamit ang `kill -ALRM `(saan ay ang process id ng postfwd).
Halimbawa:
Ago 19 12:39:45 mail1 postfwd[666]: [STATS] Mga Counter: 213000 segundo sa uptime, 39 na panuntunan
Ago 19 12:39:45 mail1 postfwd[666]: [STATS] Mga Kahilingan: 71643 sa pangkalahatan, 49 huling pagitan, 62.88% cache hit
Ago 19 12:39:45 mail1 postfwd[666]: [STATS] Mga Average: 20.18 sa pangkalahatan, 4.90 huling pagitan, 557.30 sa itaas
Ago 19 12:39:45 mail1 postfwd[666]: [STATS] Mga Nilalaman: 44 na naka-cache na kahilingan, 239 naka-cache na mga resulta ng dnsbl
Ago 19 12:39:45 mail1 postfwd[666]: [STATS] Rule ID: R-001 na tumugma: 2704 beses
Ago 19 12:39:45 mail1 postfwd[666]: [STATS] Rule ID: R-002 na tumugma: 9351 beses
Ago 19 12:39:45 mail1 postfwd[666]: [STATS] Rule ID: R-003 na tumugma: 3116 beses
...
--no-rulestats
Hindi pinapagana ang mga istatistika ng bawat panuntunan. Pinapanatiling malinis ang iyong log, kung hindi mo gagamitin ang mga ito.
Walang epekto ang opsyong ito nang walang --summary o --verbose set.
-L, --stdout
Nire-redirect ang lahat ng syslog na mensahe sa stdout para sa pag-debug. Huwag kailanman gamitin ito sa postfix!
-t, --pagsusulit
Sa test mode postfwd2 palaging nagbabalik ng "dunno", ngunit logs ayon
sa rulesset nito. -v ay awtomatikong itatakda sa pagpipiliang ito.
-n, --tango
Dini-disable ang lahat ng DNS based checks tulad ng RBL checks. Mga panuntunang naglalaman ng
hindi papansinin ang mga naturang elemento.
-n, --nodnslog
Hindi pinapagana ang pag-log ng mga kaganapan sa dns.
--dns_timeout (default: 14)
Itinatakda ang timeout para sa mga asynchonous na query sa dns sa ilang segundo. Malalapat ang halagang ito sa
lahat ng dns item sa isang panuntunan.
--dns_timeout_max (default: 10)
Itinatakda ang maximum na timeout counter para sa mga dnsbl lookup. Kung ang timeout ay lumampas sa halagang ito
ang kaukulang dnsbl ay ide-deactivate saglit (tingnan ang --dns_timeout_interval).
--dns_timeout_interval (default=1200)
Ang dnsbl timeout counter ay lilinisin pagkatapos ng agwat na ito sa ilang segundo. Gamitin mo to
kasabay ng parameter na --dns_timeout_max.
--dns_async_txt
Magsagawa ng dnsbl A at TXT lookup nang sabay-sabay (kung hindi, para lang sa mga listing na may at
hindi bababa sa isang A record). Nangangailangan ito ng mas maraming bandwidth ng network dahil sa tumaas na mga query ngunit
maaaring tumaas ang throughput dahil maaaring i-parallelize ang mga paghahanap.
--dns_max_ns_lookups (default=0)
maximum na mga pangalan ng ns na hahanapin gamit ang sender_ns_addrs item. gumamit ng 0 para walang maximum.
--dns_max_mx_lookups (default=0)
maximum na mx na pangalan upang maghanap gamit ang sender_mx_addrs na item. gumamit ng 0 para walang maximum.
-Ako, --instantcfg
Ang mga config file, na tinukoy ng -f ay muling babasahin para sa bawat kahilingan
natatanggap ng postfwd2. Ito ay nagbibigay-daan sa on-the-fly na mga pagbabago sa configuration
nang hindi nagre-restart. Kahit na ang mga file ay mababasa lamang kung kinakailangan
(na nangangahulugang nagbago ang kanilang mga oras ng pag-access mula noong huling nabasa) maaaring ito
makabuluhang taasan ang pagkarga ng system.
--config_timeout (default=3)
timeout sa ilang segundo upang mai-parse ang isang linya ng pagsasaayos. kung lalampas, ang panuntunan ay
laktawan. ito ay ginagamit upang maiwasan ang mga problema dahil sa malalaking file o mga loop.
--keep_rates (default=0)
Sa hanay ng opsyong ito, hindi ki-clear ng postfwd2 ang mga counter limit ng rate sa reload. Pakiusap
tandaan na kailangan mong i-restart (hindi i-reload) ang postfwd gamit ang opsyong ito kung magbabago ka
anumang mga tuntunin sa limitasyon ng rate.
--save_rates (default=wala)
Sa opsyong ito, nai-save ng postfwd ang mga umiiral nang counter limit sa disk at nire-reload ang mga ito
sa pagsisimula ng programa. Nagbibigay-daan ito sa patuloy na mga limitasyon sa rate sa mga pag-restart o pag-reboot ng program.
Pakitandaan na kailangan ng postfwd ang read at write access sa tinukoy na file.
--fast_limit_evaluation (default=0)
Kapag naitakda na ng ruleset ang isang ratelimit, susuriin ang mga kahilingan sa hinaharap laban dito
bago kumonsulta sa ruleset. Ang mode na ito ay ang default na gawi hanggang v1.30.
Sa mode na ito, magiging mas mabilis ang mga limitasyon sa rate, ngunit mase-set up din sa kalaunan
ang mga whitelisting-rules sa loob ng ruleset ay maaaring hindi gumana gaya ng inaasahan.
LIMITASYON: Hindi pinapayagan ng opsyong ito ang mga nested postfwd command tulad ng
action=rate(sender/3/60/maghintay(3))
Hindi gumagana ang opsyong ito sa mga function na strict-rfc5321 rate().
Nagbibigay-kaalaman argumento
Ang mga argumentong ito ay para lamang sa paggamit ng command line. Huwag kailanman gamitin ang mga ito sa postfix!
-C, --showconfig
Ipinapakita ang kasalukuyang ruleset. Gamitin ang -v para sa verbose output.
-V, --versi
Ipinapakita ang bersyon ng programa.
-h, --tulong
Ipinapakita ang paggamit ng programa.
-m, --manwal
Ipinapakita ang manwal ng programa.
-D, --mga default
nagpapakita ng kumpletong mga setting ng postfwd2.
-P, --perfmon
Ang pagpipiliang ito ay lumiliko ng anumang syslogging at output. Ito ay kasama
para sa pagsubok sa pagganap.
--dumpstats
Ipinapakita ang mga istatistika ng paggamit ng programa.
--dumpcache
Ipinapakita ang mga nilalaman ng cache.
--delcache
Nag-aalis ng item sa cache ng kahilingan. Gumamit ng --dumpcache upang matukoy ang mga bagay.
Hal:
# postfwd --dumpcache
...
%rate_cache -> %sender=[protektado ng email] -> %RATE002+2_600 -> @count -> '1'
%rate_cache -> %sender=[protektado ng email] -> %RATE002+2_600 -> @maxcount -> '2'
...
# postfwd --delrate="sender=[protektado ng email]"
rate cache item 'nagpadala=[protektado ng email]' inalis
--delrate
Nag-aalis ng isang item mula sa cache ng rate. Gumamit ng --dumpcache upang matukoy ang mga bagay.
Palamigan
Sa daemon mode postfwd2 reloads ito ay rulesset pagkatapos makatanggap ng HUP signal. Mangyaring tingnan ang
paglalarawan ng switch na '-I' upang ma-refresh ang iyong configuration para sa bawat kahilingan
natatanggap ng postfwd2.
HALIMBAWA
## whitelisting
# 1. mga network 192.168.1.0/24, 192.168.2.4
# 2. client_name *.gmx.net at *.gmx.de
# 3. nagpadala *@someshop.tld mula 11.22.33.44
id=WL001; action=ewan ; client_address=192.168.1.0/24, 192.168.2.4
id=WL002; action=ewan ; client_name=\.gmx\.(net|de)$
id=WL003; action=ewan ; sender=@someshop\.tld$ ; client_address=11.22.33.44
## Kontrol ng TLS
# 1. *@authority.tld lang na may tamang TLS fingerprint
# 2. *@secret.tld lang na may keysizes >=64
id=TL001; action=ewan ; sender=@authority\.tld$ ; ccert_fingerprint=AA:BB:CC..
id=TL002; action=TANGGILAN ang maling fingerprint ng TLS ; sender=@authority\.tld$
id=TL003; action=REJECT tls keylength < 64 ; sender=@secret\.tld$ ; encryption_keysize=64
## Pinagsamang mga pagsusuri sa RBL
# Tatanggihan nito ang mail kung
# 1. nakalista sa ix.dnsbl.manitu.net
# 2. nakalista sa zen.spamhaus.org (sbl at xbl, dns cache timeout 1200s sa halip na 3600s)
# 3. nakalista sa min 2 ng bl.spamcop.net, list.dsbl.org, dnsbl.sorbs.net
# 4. nakalista sa bl.spamcop.net at isa sa rhsbl.ahbl.org, rhsbl.sorbs.net
id=RBL01 ; action=REJECT nakalista sa ix.dnsbl.manitu.net ; rbl=ix.dnsbl.manitu.net
id=RBL02 ; action=REJECT nakalista sa zen.spamhaus.org ; rbl=zen.spamhaus.org/127.0.0.[2-8]/1200
id=RBL03 ; action=REJECT nakalista sa napakaraming RBL ; rblcount=2 ; rbl=bl.spamcop.net, list.dsbl.org, dnsbl.sorbs.net
id=RBL04 ; action=REJECT pinagsamang RBL+RHSBL check ; rbl=bl.spamcop.net ; rhsbl=rhsbl.ahbl.org, rhsbl.sorbs.net
## Laki ng mensahe (nangangailangan ng message_size_limit na itakda sa 30000000)
# 1. 30MB para sa mga system sa *.customer1.tld
# 2. 20MB para sa user ng SASL na joejob
# 3. 10MB default
id=SZ001; protocol_state==END-OF-MESSAGE; aksyon=DUNNO; laki<=30000000 ; client_name=\.customer1.tld$
id=SZ002; protocol_state==END-OF-MESSAGE; aksyon=DUNNO; laki<=20000000 ; sasl_username==joejob
id=SZ002; protocol_state==END-OF-MESSAGE; aksyon=DUNNO; laki<=10000000
id=SZ100; protocol_state==END-OF-MESSAGE; action=REJECT na mensahe ay masyadong malaki
## Selective Greylisting
##
## Tandaan na hindi kasama sa postfwd ang greylisting. Ang setup na ito ay nangangailangan ng tumatakbong serbisyong postgrey
## sa port 10031 at ang sumusunod na klase ng paghihigpit sa postfix sa iyong main.cf:
##
## smtpd_restriction_classes = check_postgrey, ...
## check_postgrey = check_policy_service inet:127.0.0.1:10031
#
# 1. kung nakalista sa zen.spamhaus.org na may mga resultang 127.0.0.10 o .11, ang dns cache timeout ay 1200s
# 2. Walang rDNS ang kliyente
# 3. Ang kliyente ay nagmula sa ilang mga dialin na domain
id=GR001; action=check_postgrey ; rbl=dul.dnsbl.sorbs.net, zen.spamhaus.org/127.0.0.1[01]/1200
id=GR002; action=check_postgrey ; client_name=^unknown$
id=GR003; action=check_postgrey ; client_name=\.(t-ipconnect|alicedsl|ish)\.de$
## Oras ng Petsa
date=24.12.2007-26.12.2007 ; action=450 4.7.1 sarado ang opisina tuwing pasko
oras=04:00:00-05:00:00 ; action=450 4.7.1 patuloy na pagpapanatili, subukang muli sa ibang pagkakataon
oras=-07:00:00 ; sasl_username=jim ; action=450 4.7.1 para sayo, jim
oras=22:00:00- ; sasl_username=jim ; action=450 4.7.1 hanggang huli na ngayon, jim
buwan=-Abr ; action=450 4.7.1 magkita tayo sa Mayo
araw=!!Lunes-Biyer ; action=check_postgrey
## Paggamit ng jump
# Ang sumusunod ay nagbibigay-daan sa isang laki ng mensahe na 30MB para sa iba
# user/kliyente habang ang iba ay magkakaroon lamang ng 10MB.
id=R001 ; action=jump(R100) ; sasl_username=^(Alice|Bob|Jane)$
id=R002 ; action=jump(R100) ; client_address=192.168.1.0/24
id=R003 ; action=jump(R100) ; ccert_fingerprint=AA:BB:CC:DD:...
id=R004 ; action=jump(R100) ; ccert_fingerprint=AF:BE:CD:DC:...
id=R005 ; action=jump(R100) ; ccert_fingerprint=DD:CC:BB:DD:...
id=R099 ; protocol_state==END-OF-MESSAGE; action=REJECT message masyadong malaki (max. 10MB); laki=10000000
id=R100 ; protocol_state==END-OF-MESSAGE; action=REJECT message masyadong malaki (max. 30MB); laki=30000000
## Paggamit ng puntos
# Ang sumusunod ay tinatanggihan ang isang mail, kung ang kliyente
# - ay nakalista sa 1 RBL at 1 RHSBL
# - ay nakalista sa 1 RBL o 1 RHSBL at walang tamang rDNS
# - ang ibang mga kliyente na walang tamang rDNS ay susuriin sa greylist
# - ang ilang mga whitelist ay ginagamit upang babaan ang marka
id=S01 ; iskor=2.6 ; action=check_postgrey
id=S02 ; iskor=5.0 ; action=REJECT postfwd score masyadong mataas
id=R00 ; action=score(-1.0) ; rbl=exemptions.ahbl.org,list.dnswl.org,query.bondedsender.org,spf.trusted-forwarder.org
id=R01 ; action=score(2.5) ; rbl=bl.spamcop.net, list.dsbl.org, dnsbl.sorbs.net
id=R02 ; action=score(2.5) ; rhsbl=rhsbl.ahbl.org, rhsbl.sorbs.net
id=N01 ; action=score(-0.2) ; client_name==$$helo_name
id=N02 ; action=score(2.7) ; client_name=^unknown$
...
## Paggamit ng rate at laki
# Ang sumusunod na pansamantalang tumatanggi sa mga kahilingan mula sa "hindi kilalang" mga kliyente, kung sila
# 1. lumampas sa 30 kahilingan kada oras o
# 2. sinubukang magpadala ng higit sa 1.5mb sa loob ng 10 minuto
id=RATE01 ; client_name==hindi kilala ; protocol_state==RCPT
action=rate(client_address/30/3600/450 4.7.1 paumanhin, max 30 na kahilingan kada oras)
id=SIZE01 ; client_name==hindi kilala ; protocol_state==END-OF-MESSAGE
action=size(client_address/1572864/600/450 4.7.1 sorry, max 1.5mb bawat 10 minuto)
## Mga Macro
# kahulugan
&&RBLS { rbl=zen.spamhaus.org,list.dsbl.org,bl.spamcop.net,dnsbl.sorbs.net,ix.dnsbl.manitu.net; };
&&GONOW { action=REJECT your request cause our spam detection policy to reject this message. Higit pang impormasyon sa http://www.domain.local; };
# panuntunan
&&ALIS NA ; &&RBLS ; client_name=^unknown$
&&ALIS NA ; &&RBLS ; client_name=(\d+[\.-_]){4}
&&ALIS NA ; &&RBLS ; client_name=[\.-_](adsl|dynamic|ppp|)[\.-_]
## Mga pangkat
# kahulugan
&&RBLS{
rbl=zen.spamhaus.org
rbl=list.dsbl.org
rbl=bl.spamcop.net
rbl=dnsbl.sorbs.net
rbl=ix.dnsbl.manitu.net
};
&&RHSBLS{
...
};
&&DYNAMIC{
client_name==hindi kilala
client_name~=(\d+[\.-_]){4}
client_name~=[\.-_](adsl|dynamic|ppp|)[\.-_]
...
};
&&BAD_HELO{
helo_name==my.name.tld
helo_name~=^([^\.]+)$
helo_name~=\.(local|lan)$
...
};
&&MAINTENANCE{
date = 15.01.2007/XNUMX/XNUMX
date = 15.04.2007/XNUMX/XNUMX
date = 15.07.2007/XNUMX/XNUMX
date = 15.10.2007/XNUMX/XNUMX
time=03:00:00 - 04:00:00
};
# panuntunan
id=COMBINED ; &&RBLS ; &&DYNAMIC ; action=REJECT dynamic client at nakalista sa RBL
id=MAINTENANCE ; &&MAINTENANCE ; action=DEFER maintenance time - pakisubukang muli mamaya
# ngayon na may set() command, tandaan ang mahabang item na iyon
# na listahan ay hindi kailangang ikumpara nang dalawang beses
id=RBL01 ; &&RBLS ; action=set(HIT_rbls=1)
id=HELO01 ; &&BAD_HELO ; action=set(HIT_helo=1)
id=DYNA01 ; &&DYNAMIC ; action=set(HIT_dyna=1)
id=REJECT01 ; HIT_rbls==1 ; HIT_helo==1 ; action=REJECT mangyaring tingnan http://some.org/info?reject=01 para sa karagdagang impormasyon
id=REJECT02 ; HIT_rbls==1 ; HIT_dyna==1 ; action=REJECT mangyaring tingnan http://some.org/info?reject=02 para sa karagdagang impormasyon
id=REJECT03 ; HIT_helo==1 ; HIT_dyna==1 ; action=REJECT mangyaring tingnan http://some.org/info?reject=03 para sa karagdagang impormasyon
## pinagsama sa pinahusay na mga tampok ng rbl
#
id=RBL01 ; rhsblcount=lahat ; rblcount=lahat ; &&RBLS ; &&RHSBLS
action=set(HIT_dnsbls=$$rhsblcount,HIT_dnsbls+=$$rblcount,HIT_dnstxt=$$dnsbltext)
id=RBL02 ; HIT_dnsbls>=2 ; action=554 5.7.1 na-block gamit ang $$HIT_dnsbls DNSBLs [INFO: $$HIT_dnstxt]
PARSER
Configuration
Ang postfwd2 ruleset ay maaaring tukuyin sa commandline (-r option) o basahin mula sa mga file
(-f). Ang pagkakasunud-sunod ng iyong mga argumento ay pananatilihin. Dapat mong suriin ang parser gamit ang -C |
--showconfig switch sa command line bago mag-apply ng bagong config. Ang sumusunod na tawag:
postfwd2 --showconfig \
-r "id=TEST; recipient_count=100; action=WARN mail na may 100+ recipient" \
-f /etc/postfwd.cf \
-r "id=DEFAULT; action=dunno";
gagawa ng sumusunod na output:
Rule 0: id->"TEST" action->"WARN mail with 100+ recipients"; recipient_count->"100"
...
... ...
...
Panuntunan : id->"DEFAULT" action->"dunno"
Maramihang mga item ng parehong uri ay idaragdag sa mga listahan (tingnan ang seksyong "ITEMS" para sa higit pa
impormasyon):
postfwd2 --showconfig \
-r "client_address=192.168.1.0/24; client_address=172.16.26.32; action=dunno"
magreresulta sa:
Panuntunan 0: id->"R-0"; aksyon->"ewan"; client_address->"192.168.1.0/24, 172.16.26.32"
Ang mga macro ay sinusuri sa yugto ng pagsasaayos, na nangangahulugang iyon
postfwd2 --showconfig \
-r "&&RBLS { rbl=bl.spamcop.net; client_name=^unknown$; };" \
-r "id=RBL001; &&RBLS; action=REJECT na nakalista sa spamcop at bad rdns";
magreresulta sa:
Panuntunan 0: id->"RBL001"; aksyon->"TANGGILAN ang nakalista sa spamcop at masamang rdns"; rbl->"bl.spamcop.net"; client_name->"^unknown$"
Hiling pagproseso
Kapag dumating ang isang kahilingan sa paglalaan ng patakaran, ihahambing ito sa mga patakaran ng postfwd. Upang
siyasatin ang pagproseso nang detalyado dapat mong dagdagan ang verbority gamit ang paggamit ng "-v" o "-vv"
lumipat. Nire-redirect ng "-L" ang mga log message sa stdout.
Ang pagsunod sa pagkakasunud-sunod ng ruleset sa pangkalahatan, ang mga item ay ihahambing sa random na pagkakasunud-sunod, na
karaniwang nangangahulugan na
id=R001; action=ewan; client_address=192.168.1.1; nagpadala=[protektado ng email]
katumbas ng
id=R001; nagpadala=[protektado ng email]; client_address=192.168.1.1; action=ewan
Susuriin ang mga listahan sa tinukoy na pagkakasunud-sunod. Ito ay nagbibigay-daan sa isa na maglagay ng mas mabilis
mga expression sa una:
postfwd2 --nodaemon -vv -L -r "id=RBL001; rbl=localrbl.local zen.spamhaus.org; action=REJECT" /some/where/request.sample
gumagawa ng mga sumusunod
[LOGS info]: ihambing ang rbl: "remotehost.remote.net[68.10.1.7]" -> "localrbl.local"
[LOGS info]: count1 rbl: "2" -> "0"
[LOGS info]: query rbl: localrbl.local 7.1.10.68 (7.1.10.68.localrbl.local)
[LOGS info]: count2 rbl: "2" -> "0"
[LOGS info]: tugma rbl: FALSE
[LOGS info]: ihambing ang rbl: "remotehost.remote.net[68.10.1.7]" -> "zen.spamhaus.org"
[LOGS info]: count1 rbl: "2" -> "0"
[LOGS info]: query rbl: zen.spamhaus.org 7.1.10.68 (7.1.10.68.zen.spamhaus.org)
[LOGS info]: count2 rbl: "2" -> "0"
[LOGS info]: tugma rbl: FALSE
[LOGS info]: Aksyon: ewan
Ang negation operator !!( ) ang may pinakamataas na priyoridad at samakatuwid ay susuriin
una. Pagkatapos ay isinasagawa ang mga variable na pagpapalit:
postfwd2 --nodaemon -vv -L -r "id=TEST; action=REJECT; client_name=!!($$heloname)" /some/where/request.sample
ay magbibigay
[LOGS info]: ihambing ang client_name: "unknown" -> "!!($$helo_name)"
[LOGS info]: tanggihan ang client_name: "unknown" -> "$$helo_name"
[LOGS info]: palitan ang client_name: "unknown" -> "english-breakfast.cloud8.net"
[LOGS info]: tumugma sa client_name: TRUE
[LOGS info]: Pagkilos: TANGGILAN
Itakda ang panuntunan paghusga
Tumatama ang isang panuntunan kapag nagtugma ang lahat ng item (o kahit isang elemento ng isang listahan para sa bawat item).
Sa sandaling nabigo ang isang item (o lahat ng elemento ng isang listahan) na ihambing laban sa kahilingan
attribute na ang parser ay lalabas sa susunod na panuntunan sa postfwd2 ruleset.
Kung tumutugma ang isang panuntunan, mayroong dalawang opsyon:
* Ibinabalik ng Panuntunan ang pagkilos na postfix (hindi alam, tanggihan, ...) Ang parser ay huminto sa pagproseso ng panuntunan at
ibinabalik ang aksyon sa postfix. Ang iba pang mga patakaran ay hindi susuriin.
* Ang panuntunan ay nagbabalik ng postfwd2 na aksyon (tumalon(), tandaan(), ...) Sinusuri ng parser ang ibinigay
aksyon at magpapatuloy sa susunod na panuntunan (maliban sa tumalon() or huminto () aksyon - mangyaring
tingnan ang seksyong "AKSYON" para sa higit pang impormasyon). Walang ipapadala sa postfix.
Kung walang tumugma na panuntunan at naabot ang dulo ng ruleset, babalik ang postfwd2
nang walang pag-log ng anuman maliban kung nasa verbose mode. Maaari kang maglagay ng huling catch-all na panuntunan sa
baguhin ang pag-uugali na iyon:
... ...
id=DEFAULT ; action=ewan
ay mag-log ng anumang kahilingan na pumasa sa ruleset nang hindi naabot ang isang naunang panuntunan.
NAG-DEBUGG
Upang i-debug ang mga espesyal na hakbang ng parser, ang switch na '--debug' ay kumukuha ng isang listahan ng mga klase sa pag-debug.
Sa kasalukuyan ang mga sumusunod na klase ay tinukoy:
lahat ng cache config debugdns devel dns getcache getdns
humihiling ng setcache setdns ang mga rate ng getdnspacket
parent_cache parent_dns_cache parent_rate_cache parent_request_cache
child_cache child_dns_cache child_rate_cache child_request_cache
INTEGRASYON
pagsasama-sama sa pamamagitan ng demonyo paraan
Ang karaniwang paraan ng paggamit ng postfwd2 ay simulan ito bilang daemon, nakikinig sa isang tinukoy na tcp
daungan. Ang postfwd2 ay magbubunga ng maraming proseso ng bata na nakikipag-ugnayan sa isang parent cache.
Ito ang gustong paraan upang magamit ang postfwd2 sa mga kapaligirang may mataas na volume. Simulan ang postfwd2 sa
ang mga sumusunod na parameter:
postfwd2 -d -f /etc/postfwd.cf -i 127.0.0.1 -p 10045 -u nobody -g nobody -S
Para sa mahusay na pag-cache dapat mong suriin kung magagamit mo ang mga pagpipilian --cacheid,
--cache-rdomain-only, --cache-no-sender at --cache-no-size.
Ngayon suriin ang iyong syslogs (default na pasilidad na "mail") para sa isang linya tulad ng:
Ago 9 23:00:24 mail postfwd[5158]: postfwd2 n.nn handa na para sa input
at gamitin ang `netstat -an|grep 10045` upang tingnan kung may katulad
tcp 0 0 127.0.0.1:10045 0.0.0.0:* MAKINIG
Kung gumagana ang lahat, buksan ang iyong postfix main.cf at ipasok ang sumusunod
127.0.0.1:10045_time_limit = 3600 <--- pagsasama
smtpd_recipient_restrictions = permit_mynetworks <--- inirerekomenda
reject_unauth_destination <--- inirerekomenda
check_policy_service inet:127.0.0.1:10045 <--- pagsasama
I-reload ang iyong configuration gamit ang `postfix reload` at panoorin ang iyong mga log. Sa ito gumagana sa iyo
dapat makakita ng mga linyang tulad ng sumusunod sa iyong mail log:
Ago 9 23:01:24 mail postfwd[5158]: rule=22, id=ML_POSTFIX, client=english-breakfast.cloud9.net[168.100.1.7], sender=[protektado ng email], tatanggap=[protektado ng email], helo=english-breakfast.cloud9.net, proto=ESMTP, state=RCPT, action=dunno
Kung gusto mong suriin ang laki o rcpt_count na mga item dapat mong isama ang postfwd2 sa
smtp_data_restrictions o smtpd_end_of_data_restrictions. Siyempre maaari mo ring tukuyin ang isang
restriction class at gamitin ito sa iyong mga access table. Gumawa muna ng file
/etc/postfix/policy na naglalaman ng:
domain1.local postfwdcheck
domain2.local postfwdcheck
...
Pagkatapos ay i-postmap ang file na iyon (`postmap hash:/etc/postfix/policy`), buksan ang iyong main.cf at ipasok
# Mga Klase sa Paghihigpit
smtpd_restriction_classes = postfwdcheck, ... <--- pagsasama
postfwdcheck = check_policy_service inet:127.0.0.1:10045 <--- integration
127.0.0.1:10045_time_limit = 3600 <--- pagsasama
smtpd_recipient_restrictions = permit_mynetworks, <--- inirerekomenda
reject_unauth_destination, <--- inirerekomenda
... <--- opsyonal
check_recipient_access hash:/etc/postfix/policy, <--- integration
... <--- opsyonal
I-reload ang postfix at panoorin ang iyong mga log.
PAGSUBOK
Una kailangan mong lumikha ng isang ruleset (tingnan ang seksyon ng Configuration). Suriin ito sa
postfwd2 -f /etc/postfwd.cf -C
Mayroong isang halimbawa ng kahilingan sa patakaran na ipinamahagi sa postfwd, na tinatawag na 'request.sample'.
Baguhin lamang ito upang matugunan ang iyong mga kinakailangan at paggamit
postfwd2 -f /etc/postfwd.cf
Dapat kang makakuha ng sagot tulad ng
aksyon=
Para sa mga pagsubok sa network gumagamit ako ng netcat:
nc 127.0.0.1 10045
para magpadala ng kahilingan sa postfwd. Kung wala kang natatanggap, siguraduhing tumatakbo ang postfwd2
at pakikinig sa tinukoy na mga setting ng network.
PAGGANAP
Ang ilan sa mga panukalang ito ay maaaring hindi tumugma sa iyong kapaligiran. Pakisuri ang iyong mga kinakailangan
at subukang mabuti ang mga bagong opsyon!
- gumamit ng mga pagpipilian sa pag-cache
- gamitin ang tamang operator ng tugma ==, <=, >=
- gumamit ng ^ at/o $ sa mga regular na expression
- gumamit ng mga listahan ng item (mas mabilis kaysa sa iisang panuntunan)
- gumamit ng set() na aksyon sa mga paulit-ulit na listahan ng item
- gumamit ng mga pagtalon at mga limitasyon sa rate
- gumamit ng isang pre-lookup na panuntunan para sa rbl/rhsbls na may walang laman na note() na aksyon
TINGNAN KAYA DIN
Tingnan mohttp://www.postfix.org/SMTPD_POLICY_README.html> para sa isang paglalarawan kung paano ang Postfix
gumagana ang mga server ng patakaran.
Gamitin ang postfwd2 online gamit ang mga serbisyo ng onworks.net