GoGPT Best VPN GoSearch

Ulubiona usługa OnWorks

mailagent — online w chmurze

Uruchom agenta pocztowego w darmowym dostawcy hostingu OnWorks przez Ubuntu Online, Fedora Online, emulator online Windows lub emulator online MAC OS

Jest to agent pocztowy poleceń, który można uruchomić u bezpłatnego dostawcy usług hostingowych OnWorks przy użyciu jednej z wielu naszych bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online MAC OS

PROGRAM:

IMIĘ


mailagent - narzędzie do automatycznego przetwarzania poczty

STRESZCZENIE


agent pocztowy [ -dhilqtFIVU ] [ -s {umaryt} ] [ -f filet ] [ -e rządzić ] [ -c config ] [ -L
poziom dziennika ] [ -r plik reguł ] [ -o Zastąp ] [ plik poczty ]

OPIS


agent pocztowy umożliwia automatyczne przetwarzanie poczty. Biorąc pod uwagę zestaw lex-podobne zasady,
jesteś w stanie wypełniać maile do określonych folderów, przekazywać wiadomości do osoby trzeciej, potokować
wysłać wiadomość do polecenia, a nawet wysłać wiadomość do grupy dyskusyjnej. Możliwe jest również
przetwarzać komunikaty zawierające niektóre polecenia. The agent pocztowy nie jest zwykle wywoływana ręcznie
ale jest raczej wywoływany przez filtrować program, który z kolei jest wywoływany przez Wyślij maila, Że
oznacza, że ​​musisz mieć Wyślij maila w systemie, aby tego użyć. Ty też musisz mieć Perl biegać
skrypty agenta pocztowego.

Istnieje zestaw opcji, których można użyć podczas wywoływania agent pocztowy się. Proszę
odnoszą się do OPCJE sekcja zawiera pełny opis. Możesz skorzystać z -h opcja dostania
tajemnicze przypomnienie o użyciu.

Produkt Omówienie
agent pocztowy ma w rzeczywistości cztery różne zestawy funkcji, które mogą być używane jednocześnie lub
jeden na raz. Wiąże:

· Procesor poleceń @SH, aby zachować kompatybilność z pierwszą implementacją. W
to najprostsze użycie, wszystkie wiadomości e-mail są pozostawiane w Twojej skrzynce pocztowej (lub catch all
folder wymagany w systemach Debian: Zobacz /usr/share/doc/mailagent/BEZPIECZEŃSTWO dla
Detale), ze specjalnym przetwarzaniem w przypadku wiadomości, których tematem jest Command.
Proszę zapoznać się z rozdziałem pt ZA POMOCĄ THE DEFAULT ZASADY jeśli chcesz tego użyć
cecha.

· Kompletny filtr poczty, który pomaga sortować pocztę na podstawie różnych sortowań
kryteria i działania. Filtrowanie jest określone w pliku reguł i zastępuje
domyślnym Command przetwarzanie poczty (które można ponownie włączyć przez jawne ustawienie
stworzyć dla niego regułę). To powinno być najczęstszym zastosowaniem agent pocztowy i jest w pełni
udokumentowane w części pt ZA POMOCĄ THE FILTER. Możesz dostarczyć pocztę do
zwykłe foldery w stylu uniksowym, ale także do folderów MMDF i MH.

· Zamiennik dla wakacje program, który automatycznie odpowie na Twoją pocztę
podczas gdy ciebie nie ma. Wystarczy podać wiadomość do odesłania i
częstotliwość, z jaką to nastąpi. Niektóre proste podstawienia makr pozwalają ponownie
użyj niektórych części nagłówka poczty w wiadomości urlopowej, aby uzyskać bardziej spersonalizowaną wiadomość
odpowiedź. Zobacz WAKACJE TRYB sekcja po więcej szczegółów.

· Ogólny serwer pocztowy, który pozwoli Ci zaimplementować prawdziwy serwer pocztowy bez
kłopotów z problemami niższego poziomu, takimi jak odzyskiwanie błędów, rejestrowanie lub analizowanie poleceń.
Pełną dokumentację można znaleźć w dziale RODZAJOWY MAIL SERVER na końcu
tę stronę podręcznika.

Możliwe jest rozszerzenie poleceń filtrujących agenta pocztowego poprzez zaimplementowanie ich w Perl oraz
następnie ładowanie ich automagicznie, gdy są używane. Te rozszerzone polecenia będą się zachowywać
dokładnie tak, jak te wbudowane, jak udokumentowano w ROZSUWALNY FILTRACJA POLECENIA

Learning Od Przykłady
Jest całkiem możliwe, że ta strona podręcznika okaże się dla Ciebie zbyt skomplikowana.
Niestety, tak naprawdę nie ma to być samouczek, a raczej materiał referencyjny. Jeśli
jeśli chcesz, możesz zacząć od przejrzenia przykładów przechowywanych w drzewie źródeł dystrybucji
dla agent/przykłady. Ten katalog zawiera dwa przykłady plików reguł (spójrz na plik
najpierw plik README) i są obszernie komentowane.

DOSTAĆ ZACZĘŁA SIĘ


Najpierw musisz zainstalować minimalną konfigurację i zobaczyć, jak to działa. To byłby
bezużyteczne, aby w pełni zainstalować program, a następnie odkryć, że nie działa jako
reklamowane...

Aby rozpocząć instalację, musisz skonfigurować plik ~/.agent pocztowy plik, który jest głównym
plik konfiguracyjny i wybierz odpowiedni filtrować program.

Wybór Filtruj Program
Dystrybucja zawiera dwa programy filtrujące. Jeden napisany w powłoce, a drugi w C. The
wersja powłoki może być tą, której można użyć, jeśli możesz odbierać pocztę na wielu różnych
platformy, na których twój katalog domowy jest montowany przez NFS (tj
platformy). Wersja C jest bezpieczniejsza i dużo szybsza, ale trzeba ją zainstalować na stałe
Lokalizacja.

Na niektórych platformach Wyślij maila nie resetuje poprawnie swojego identyfikatora UID podczas przetwarzania wiadomości e-mail w swoim
własna kolejka. W takim przypadku musisz zdobyć prywatną kopię programu filtrującego C i utworzyć
to ustawione dla siebie. Filtr poprawnie zresetuje swój UID, jeśli zostanie wywołany z an
efektywny UID inny niż twój (może również wymagać bitu setgid, aby zresetować GID jako
Dobrze). Jeśli tak jest rzeczywiście w twoim systemie, upewnij się, że używasz ścieżka
zmienna konfiguracyjna, aby ustawić odpowiednią ŚCIEŻKĘ, ponieważ filtr odrodzi proces Perla
opcję „-S”, szukając a agent pocztowy skrypt.

Nawet jeśli nie musisz uzyskać kopii setuid pliku filtrować program, mądrze jest skonfigurować
właściwa ścieżka: ktoś może włamać się na twoje konto, umieszczając w nim konia trojańskiego agenta pocztowego
odpowiednia lokalizacja. Upewnij się również, że program pocztowy jest chroniony przed
piśmie, jak również katalog, który go przechowuje, lub ktoś może zastąpić swój własny
wersję skryptu i złamać zabezpieczenia. Wierzę setuidowi filtrować bezpieczny program,
ale przeoczenie jest zawsze możliwe, więc proszę zgłaszać mi wszelkie luki w zabezpieczeniach.

filtrować skrypt można znaleźć w Lib/mail agent informator. To wymaga trochę krawiectwa, więc
powinieneś skopiować go do swojego katalogu domowego i edytować do swoich potrzeb. Komentarze wstrzymane
w nim powinno być oczywiste. Na początku skryptu znajduje się tylko niewielka sekcja
który trzeba edytować. Będziesz musiał usunąć komentarze powłoki w pliku filtrować scenariusz autorstwa
siebie, jeśli twoja skorupa nie może sobie z nimi poradzić.

Od wersji 3.0 PL44 radzę preferować wersję C, jeśli się martwisz
bezpieczeństwo. Jeśli znajdujesz się w sytuacji, w której wiele architektur może przetwarzać Twoje pliki .Naprzód,
wtedy opakowanie powłoki wybierze odpowiedni plik wykonywalny na podstawie architektury
wymagane.

Konfigurowanie agent pocztowy
If agent pocztowy znajduje się na twojej ścieżce, możesz automatycznie skonfigurować domyślną instalację przez
bieganie:

agent pocztowy -I

który stworzy a ~/.agent pocztowy plik z istniejącego szablonu, dostosuj niektóre ważne
zmiennych dla Twojej witryny i wykonaj kilka podstawowych kontroli poprawności. Wszystko, co robi polecenie, jest
na ekranie w celu sprawdzenia, a wszelkie wykryte problemy zostaną zgłoszone.

W przeciwnym razie musisz skopiować plik agent pocztowy.cf plik przechowywany w podkatalogu mailagent
/usr/share/mailagent (zwany dalej Lib) jako a agent pocztowy w twoim katalogu domowym. Edytuj to
skonfigurować całe przetwarzanie. W szczególności musisz wybrać katalog spool
(zwany dalej buforem) i katalog dziennika (zwany dalej dziennikiem).

Pamiętaj, że skorzystanie z powyższej procedury automatycznej instalacji nie uniemożliwia przejścia
przez plik i modyfikując go według własnego uznania. W rzeczywistości jesteś bardzo do tego zachęcany
to, zwłaszcza dla ustawienia katalogu domowego, poziomu rejestrowania i ścieżka or p_host
zmienne. Gdy skończysz, uruchom ponownie agent pocztowy -I polecenie, aby upewnić się, że wszystko jest
Cienki. Nadal będziesz musiał podłączyć agenta pocztowego, tworząc plik ~/.do przodu plik, jak
wyjaśnione w kilku rozdziałach.

Poniżej znajduje się opis każdego z pól, które znajdziesz w ~/.agent pocztowy file,
po której następuje sugerowana wartość, jeśli ma to zastosowanie. Pola oznaczone jako opcjonalne mogą nie być
obecny w pliku konfiguracyjnym. Niektóre dziedziny mają ścisły związek z innymi i
to też jest dane.

wiek maks Okres, po którym wpis w bazie powinien zostać usunięty (sugerowany: 1 rok)
To pole jest opcjonalne, ale potrzebne, jeśli Automatyczne oczyszczanie jest włączone.
plik autora Autoryzacje zdalnej wysyłki (jeszcze nie wdrożone).
Automatyczne oczyszczanie Ustaw na WŁ. (wielkość liter nie ma znaczenia), program pocztowy przeprowadzi automatyczne czyszczenie pliku
wpisy do bazy danych pod haszysz usuwając wszystkie elementy starsze niż wiek maks. Jest
pole opcjonalne, pominięcie go domyślnie jest wyłączone. (sugerowane: WYŁ., chyba że używasz
RAZ, UNIQUE lub RECORD lub aktywuj tryb urlopowy.)
szturchaniec Niezależnie od tego, czy biffowanie jest pożądane, kiedy agent pocztowy dostarcza pocztę do folderu. Ustawić
ustaw go na ON (wielkość liter nie ma znaczenia), aby umożliwić lokalne biffowanie, jeśli jesteś zalogowany.
(opcjonalnie, domyślnie: WYŁ.)
dwugłowy Gdy biffowanie jest włączone, ta zmienna zawiera listę nagłówków, które powinny zostać wydrukowane
na zewnątrz. Nagłówki należy podawać w ich znormalizowanym formacie i oddzielać za pomocą
przecinki. (opcjonalnie, domyślnie: Od, Do, Temat, Data).
biffle Maksymalna długość treści wiadomości, która powinna zostać wydrukowana podczas biffowania.
(opcjonalnie, domyślnie 560).
podwójne linie Maksymalna liczba wierszy treści wiadomości, które powinny zostać wydrukowane, kiedy
biffowanie. Faktycznie, agent pocztowy spróbuje wydrukować taką liczbę wierszy, pod warunkiem
całkowita liczba drukowanych znaków jest mniejsza niż biffle. (opcjonalny,
domyślnie 7).
buffmh Po włączeniu treść wiadomości jest kompaktowana przed biffowaniem przez usunięcie
kolejnych spacji i zastąpienie nowej linii pojedynczą spacją. Wiadomość
sam w sobie nie jest oczywiście zmieniony fizycznie, tylko wyjście na ekranie
zainteresowany. Ponieważ może to prowadzić do trudnej do odczytania wiadomości, sugeruję
również włącz biffnice podczas korzystania z tej opcji. (opcjonalnie, domyślnie: WYŁ.).
biffmsg Ścieżka do pliku opisującego format, którego ma używać biffing. Jeśli nie ustawiono, a
używany jest domyślny format przewodowy. Doprawić do smaku. (zasugerował: ~/.biffmsg).
biffnice Czy wiadomość powinna zostać ponownie sformatowana, aby ładnie pasowała do terminala.
(opcjonalnie, domyślnie WYŁ., sugerowane: WŁ. kiedy buffmh jest również WŁĄCZONY).
biffnl Określa, czy powinny być drukowane „puste” linie treści. Przez „puste” linie,
mamy na myśli linie niezawierające słów. Ustaw go na WŁ., aby drukować takie puste wiersze
OFF, jeśli chcesz uzyskać bardziej zwarty widok ciała w ustalonych granicach
by biffle oraz podwójne linie. (opcjonalnie, domyślnie WŁ.).
biffcytat Kontroluje, czy wiodąca linia przypisania wprowadza obcięty cytat
powinien być częścią wiadomości biff, czy nie. Po wyłączeniu linia przypisania
jest przycinany wzdłuż i jest to zgłaszane w komunikacie przycinania, kiedy bifftrim is
NA. (opcjonalnie, domyślnie WŁ.).
bifftrim Określa, czy przycięte linie w komunikacie biff powinny być zastępowane przez a
komunikat informujący, ile z nich zostało przyciętych. Używany tylko przez biffowanie %-T
makro. Po wyłączeniu automatycznie się wyłącza biffcytat również. (opcjonalny,
domyślnie włączone).
bifftrlen Określa, ile wierszy powinien mieć cytat wiodący przed wykonaniem jakiegokolwiek
lamówka. Używane tylko przez makro biffingu %-T. (opcjonalnie, domyślnie 2).
zawołać Nazwa pliku kolejki wywołań, w którym przechowywane są zadania wsadowe. Ten parametr
musi być zdefiniowany podczas używania polecenia AFTER. (sugerowane: $spool/objaśnienie)
czyste okrążenia Okres czyszczenia wpisów w bazie danych. Wartość ostatniego czyszczenia jest zapisywana
do pliku kontekstu. Jest to opcjonalne, ale potrzebne, jeśli Automatyczne oczyszczanie jest włączone.
(sugerowane: 1 mln)
skomplikuj Nazwa pliku zawierającego autoryzowane polecenia. Potrzebne, gdy używany jest PROCESS.
(sugerowane: $spool/commands).
kompresować Nazwa pliku zawierającego listę skompresowanych folderów. Zobacz sekcję o
kompresja folderów. Jest to parametr opcjonalny. (zasugerował: ~/.kompresuj).
specyfikacje Nazwa pliku zawierającego specyfikacje obsługi różnych typów plików
formaty kompresji. Zobacz sekcję dotyczącą kompresji folderów. To jest opcjonalne
parametr. (sugerowane: $spool/compressors).
kompakt Domyślny znacznik kompresji podczas tworzenia nowych folderów. Jeśli nie określono,
domyślnie jest to „gzip”.
serwer kom Nazwa pliku zawierającego autoryzowane komendy SERVER oraz ich definicję.
Jest to parametr opcjonalny, jeśli nie planujesz używać ogólnego serwera pocztowego.
(sugerowane: $szpula/serwer).
kontekst Plik zawierający kontekst programu pocztowego. Kontekst zapisuje niektóre zmienne, które potrzebują
być utrzymywane przez cały czas trwania procesu. Potrzebne, jeśli włączone jest automatyczne czyszczenie.
(sugerowane: $spool/context)
dystlista Lista wszystkich dostępnych dystrybucji. Zobacz przechowywaną próbkę
Lib/mailagent/distribs. Wymagane tylko przez PROCES. (sugerowane: $spool/distribs)
domena Twoja nazwa domeny, bez kropki na początku, np example.com. Wartość to
dołączone do wartości E-mail gdy ta zmienna nie ma żadnego „@”, to
zbudować w pełni kwalifikowany adres e-mail. Zobacz także ukryta sieć zmienna.
(opcjonalnie, domyślnie jest to nazwa domeny określona w czasie kompilacji).
E-mail Twój adres poczty elektronicznej. Jeśli nie zostanie określony, mailagent spróbuje zgadnąć
To. Ten adres jest używany przez agenta pocztowego podczas próby wysłania czegoś do użytkownika
(Ty!). (sugerowane: podaj swój adres e-mail).
katalog emerg Nazwa katalogu, który powinien być używany do zrzutów, najlepiej. To jest
opcjonalny. (zasugerował: ~/tmp/zagubiony+ poczta)
execsafe Czy być surowym przed użyciem Exec () uruchomić nowy proces, czy nie. The
wartość tej zmiennej jest używana zamiast bezpieczne podczas sprawdzania pliku wykonywalnego
akta. (domyślnie WYŁ., sugerowane: WŁ., jeśli to możliwe).
przeskocz Czy pominąć Exec () wszystkie kontrole bezpieczeństwa. Nie włączaj tego
chyba że naprawdę ufasz wszystkim użytkownikom mającym dostęp do twojego komputera lub pliku
serwer. (opcjonalnie, domyślnie WYŁ., sugerowane: WYŁ.).
Ze wszystkich Czy agent pocztowy powinien uciec od wszystkich Od linie w wiadomości, nie
tylko te, które według niego powinny wyglądać na niebezpieczne (tj Od po pustym wierszu).
Ta opcja ma sens tylko wtedy, gdy zesc jest również aktywowany. Jest ignorowany
inaczej, a zatem jest opcjonalne. Domyślnie przyjmuje się, że jest WYŁĄCZONY.
(sugerowane: WYŁ., dopóki nie masz powodów, by sądzić, że Twój klient poczty jest
zdezorientowany w tym trybie: kiedy to się stanie, twój agent użytkownika podzieli pocztę dla nie
oczywisty powód).
zesc Czy agent pocztowy powinien uciec potencjalnie niebezpieczny Od wiersze w poczcie
wiadomości. Jeśli używasz MH lub twój czytnik poczty nie używa tych linii do
oddzielne komunikaty, możesz ustawić je na WYŁ. (sugerowane: WŁ.)
z podróbki Czy agent pocztowy powinien sfałszować wiersz From: w nagłówku wiadomości when
jest nieobecny. Oczywiście do działania wymaga poprawnego wiodącego wiersza From!
(opcjonalne, domyślnie włączone, sugerowane: włączone).
bezpieczny dla grup Jeśli jest WYŁĄCZONE, pliki do zapisu grupowego będą zarządzane tak, jakby były bezpieczne,
z punktu widzenia bezpieczeństwa. Jeśli to możliwe, pozostaw ją włączoną lub możesz ominąć a
ogromna luka w zabezpieczeniach bez Twojej wiedzy (opcjonalnie, domyślnie WŁĄCZONA, sugerowane:
NA).
haszysz Katalog używany do haszowania nazw przez wbudowaną bazę danych używaną przez ONCE,
Polecenia UNIQUE i RECORD. Opcjonalne, chyba że użyjesz tych poleceń lub
włączyć automatyczne czyszczenie. Katalog jest umieszczony w obszarze buforowania. (zasugerował:
$szpula/dbr).
pomocnik Katalog, w którym przechowywane są pliki pomocy dla poleceń SERWERA. (zasugerował:
$szpula/pomoc)
ukryta sieć Gdy ustawione na ON, wartość zmiennej domena jest w pełni kwalifikowaną nazwą
używany. Gdy opcja jest wyłączona, nazwa hosta jest dodawana przed rozszerzeniem domena. Jeśli nazwa hosta to
już w pełni kwalifikowana, to wartość domena jest ignorowany. Zakładając domena
jest ustawione na example.com a nazwa hosta to gospodarz, a następnie w pełni kwalifikowana nazwa
będzie host.example.com if ukryta sieć jest WYŁĄCZONY i example.com jeśli WŁ. (opcjonalny,
domyślnie to, co zostało określone w czasie kompilacji)
Główna Określa, gdzie znajduje się katalog domowy. To musi być dokładne.
poziom Poziom dziennika, zobacz poniżej definicję dostępnych poziomów (sugerowane: 9).
katalogi linków Gdy jest ustawiona na ON, dokładnie sprawdza dowiązania symboliczne do katalogów podczas wykonywania
kontrole bezpieczeństwa wrażliwych plików. To (rekurencyjnie) sprawdzi dla każdego
poziomu dowiązania symbolicznego, że katalog docelowy nie jest dostępny do zapisu dla wszystkich ani nie jest grupą
zapisywalny i że katalog nadrzędny każdego łącza docelowego nie jest katalogiem world
zapisywalny. jeśli bezpieczne opcja jest WYŁĄCZONA, parametr ten jest ignorowany. (opcjonalny,
domyślnie: WŁ., sugerowane: WŁ., gdy zabezpieczenie jest również WŁ.).
blokada Opóźnienie w sekundach między dwiema próbami zablokowania. (opcjonalnie, domyślnie: 2).
zamek Maksymalne opóźnienie w sekundach utrzymywania blokady. Po tym czasie zamek będzie
zostać złamanym. (opcjonalnie, domyślnie: 3600).
blokada maks Maksymalna liczba prób zablokowania przed poddaniem się. (opcjonalnie, domyślnie:
20).
bezpieczne Podczas blokowania pliku agent pocztowy normalnie sprawia blokada maks próby oddzielone od
opóźnienie blokady sekund, a potem rezygnuje. W obliczu dostawy do skrzynki pocztowej, to
kontynuacja może mieć sens, nawet jeśli żaden zamek nie został złapany, a nawet jeśli tylko a
wykonano częściowe blokowanie (np. jedno z blokad w stylu .lock lub flock().
udało się). Ta zmienna kontroluje, jak bardzo chcesz być bezpieczny. Ustaw go na OFF, aby pozwolić
mailagent kontynuuje dostarczanie skrzynki pocztowej, mimo że nie została wykonana żadna blokada, do stanu ON
jeśli chcesz ścisłego blokowania, do CZĘŚCIOWEGO, jeśli możesz żyć z częściowym blokowaniem.
Wiadomości niezapisane w folderze są zrzucane do awaryjnej skrzynki pocztowej. (opcjonalny,
domyślnie włączone). Od tego czasu w systemach Debian agent pocztowy nie może chwycić zamków, powinien
zawsze pozostaw WŁĄCZONY, w przeciwnym razie może dojść do zniekształcenia poczty. Widzieć
/usr/share/doc/mailagent/BEZPIECZEŃSTWO .
ostrzeżenie o blokadzie Ta zmienna kontroluje czas, po jakim agent pocztowy powinien zacząć emitować
ostrzeżenie, gdy jest zajęty próbą uzyskania blokady. Jest to lista oddzielonych przecinkami elementów
wartości w sekundach. Jeśli podane są dwie wartości, pierwsza jest czasem początkowym
próg, drugi to okres powtarzania. Na przykład wartość „15,60”
spowoduje ostrzeżenie po 15 sekundach, a następnie co 60 sekund, aż do zablokowania
podjęta lub minął czas próby zablokowania (patrz blokada maks oraz opóźnienie blokady). Jeśli
podana jest tylko jedna wartość, przyjmuje się, że jest to zarówno próg początkowy, jak i próg
okres. (opcjonalnie, domyślnie: 20,300 XNUMX).
log Nazwa pliku dziennika, który zostanie umieszczony w katalogu Log. (sugerowane: dziennik agenta).
katalog_logowania Katalog logowania. (zasugerował: ~/var/log).
skrzynka pocztowa Nazwa pliku systemowej skrzynki pocztowej, która domyślnie jest wartością pliku użytkownik
zmienna konfiguracyjna. Jest to parametr opcjonalny.
poczta Lokalizacja systemowego katalogu bufora poczty. Jeśli żaden nie jest podany, to
mailagent użyje wartości określonej przez Configure.
mailopt Opcje, które mają być przekazane do nadawcy (patrz Wyślij maila). (opcjonalnie, sugerowane: -odq
-i, gdy używasz sendmaila).
maxcmds Maksymalna liczba poleceń, które mogą być wykonane przez polecenie SERWERA
przed usunięciem pozostałej części wiadomości e-mail. (sugerowane: 10).
maksymalne błędy Maksymalna liczba błędów dla polecenia SERVER przed wyczyszczeniem pozostałych
wiadomość pocztowa. (sugerowane: 10).
największy rozmiar Maksymalny rozmiar plików w bajtach przed użyciem zestaw do wysyłania plików. To jest używane
przez PROCES. (sugerowane: 150000).
mboxlock Format używany do blokowania skrzynek pocztowych przed dostarczeniem do nich. Ten
łańcuch przechodzi przez mały mechanizm zastępowania makr, aby uczynić go większym
ogólny. Nazwa pliku uzyskana po podstawieniu makra jest nazwą blokady
który będzie używany, podając nazwę pliku, który ma zostać zablokowany. Dostępny
makra to:

%D: nazwa katalogu plików
%f: nazwa pliku do zablokowania (pełna ścieżka)
%F: podstawowa nazwa pliku (ostatni składnik ścieżki)
%p: bieżący numer pid procesu
%%: zwykły znak %

Typowe formaty blokowania to „%f.lock” i „%D/.%F.lock”. Oczywiście, aby móc
użyć tej funkcji, mailagent nie może być skonfigurowany do używania stylu flock().
tylko blokada. (opcjonalnie, domyślnie: %f.lock). Nie ma to wpływu na Debiana
systemy, ponieważ agent pocztowy i tak nie można uzyskać blokady, ponieważ nie jest to poczta sgid.
mhprofil Nazwa profilu MH, który ma być używany. Jest to potrzebne tylko podczas próby
zapisz w folderze MH. Jeśli ten opcjonalny parametr nie jest ustawiony, wartość domyślna
~/.mh_profil Jest używane.
mmdf Ustaw tę opcję na WŁ., jeśli chcesz mieć możliwość zapisywania poczty w skrzynkach pocztowych w stylu MMDF.
(sugerowane: WYŁ., chyba że używasz MMDF lub MH). Jest to nieprawidłowe w systemie Debian.
mmdfbox Wartość tej zmiennej ma znaczenie tylko wtedy, gdy mmdf jest włączony. Jeśli ustawione na ON, to nowe
foldery zostaną utworzone jako foldery MMDF. Ta zmienna nie jest używana podczas zapisywania do
istniejący folder, ponieważ w takim przypadku plik agent pocztowy automatycznie
określ typ i odpowiednio zapisz wiadomość. (sugerowane: WYŁ., chyba że
używasz MMDF lub chcesz używać MH mszf).
msgprefiks Nazwa pliku do umieszczenia w folderach katalogów, określając prefiks wiadomości do
być użytym. Opcjonalne, domyślnie .msg_prefiks.
Nazwa Imię użytkownika używane przez agenta pocztowego w odniesieniu do Ciebie. To ustawia
wartość makra %U.
nowy cmd Nazwa pliku opisującego nowe polecenia filtrowania. Patrz sekcja Rozsuwalny
Filtracja Polecenia po więcej szczegółów. Pozostaw ten opcjonalny parametr, chyba że
jesteś ekspertem od poczty. (sugerowane: $spool/newcmd).
newsopt Opcje, które mają zostać przekazane do programu wysyłania wiadomości (patrz wyślij wiadomości). (opcjonalny,
sugerowane: pozostaw puste, gdy używasz inews).
nfslock Ustaw ją na WŁ., aby zapewnić bezpieczne blokady NFS. Różnica polega na tym, że nazwa hosta to
używany w połączeniu z PID w celu uzyskania blokady. Jednak agent pocztowy musi
fork/exec, aby uzyskać te informacje. Jest to parametr opcjonalny, który jest ustawiany
domyślnie na WYŁ. (sugerowane: WYŁ., jeśli dostarczasz pocztę tylko z jednej maszyny,
nawet jeśli odbywa się to przez NFS).
passwd Plik, w którym przechowywane są hasła zasilania SERWERA - zwykle zaszyfrowane. (zasugerował:
$uprawnienia/hasło).
ścieżka Minimalna ścieżka do użycia przez program filtrujący C. Aby ustawić określoną ścieżkę dla pliku a
maszyna gospodarz, ustawić p_host zmienny. To będzie dołączony do domyślnego
PATH zmienna dostarczona przez inne programy. (zasugerował: /kosz:/ usr / bin:/usr/ucb).
Należy pamiętać, że nazwa hosta musi być określona bez dołączonej do niej nazwy domeny
(np. dla nazwy hosta lyon.eiffel.com, użyj zmiennej p_lyon). Jeśli twój gospodarz
name zawiera znak „-”, należy go zapisać jako znak „_”, ponieważ znak „-” nie jest prawidłowy
znak dla Perl nazwa zmiennej.
perlib Tej zmiennej można użyć do zmiany ścieżki wyszukiwania Perla dla wymaganych plików.
Katalogi powinny być oddzielone znakiem ':', podobnie jak ŚCIEŻKA powłoki.
Ta ścieżka jest dodawana na początku domyślnej ścieżki wyszukiwania Perla. Żaden katalog nie
zaczynający się od „/” (po podstawieniu ~nazwy) jest traktowany względem
prywatny katalog lib programu mailagent określony w czasie konfiguracji.
proszę zapisz Nazwa pliku używanego do zapisywania poziomów poprawek dla zarchiwizowanych dystrybucji. Ten
jest używany tylko przez polecenia wywoływane przez PROCESS. (sugerowane: $spool/plsave).
PowerDir Katalog z listą zezwoleń użytkowników na uprawnienia SERWERA. (zasugerował:
$uprawnienia/pozwolenie)
lista mocy Nazwa pliku zawierającego aliasy mocy SERWERA. Ponieważ nazwy mocy mogą być dowolne
long, ale niektóre systemy plików nadal mają ograniczenie do 14 znaków w nazwie pliku
długości, aliasy wewnętrzne są tworzone i utrzymywane przez program mailagent. (zasugerował:
$uprawnienia/aliasy).
dziennik mocy Plik, w którym oprócz dziennika agenta są rejestrowane żądania zasilania SERWERA. Od
są to kwestie związane z bezpieczeństwem, dobrym pomysłem jest rejestrowanie ich oddzielnie. Jeśli nie
zdefiniowane, zaloguj je tylko w dzienniku agenta. (sugerowane: $logdir/powerlog).
uprawnienia Katalog służący do administrowania zasilaniem SERWERÓW. (sugerowane: $spool/powers)
proglista Krótki opis dostępnych dystrybucji. Zobacz przechowywaną próbkę
Lib/mailagent/proglist. Jest to używane tylko przez PROCESS. (zasugerował:
$szpula/proglista)
kolejka Katalog kolejki (wiadomości oczekujące na przetworzenie). Wymagane, oczywiście.
(sugerowane: $szpula/kolejka)
przetrzymanie w kolejce Maksymalna liczba sekund, przez które poczta może znajdować się w kolejce agenta pocztowego, zanim zostanie wysłana
faktycznie przetworzone. W tym czasie, agent pocztowy nie będzie próbował przetwarzać
wiadomość nawet wtedy, gdy -q Jest używane. (opcjonalnie, domyślnie: 1800).
zagubiony w kolejce Maksymalna liczba sekund, po których agent pocztowy powinien oflagować wiadomości, które wciąż są
jego kolejka jest stara. (opcjonalnie, domyślnie: 86400, czyli dzień).
czekać w kolejce Czas w sekundach informujący C filtrować zaprogramować, jak długo musi czekać
wodowanie agent pocztowy. (opcjonalnie, domyślnie: 60, ale można je obniżyć do 0, jeśli
nie chcą czekać, aby opóźnić otrzymywanie nowych wiadomości).
pamięć podręczna reguł Nazwa pliku używanego do buforowania ostatnio skompilowanych reguł. Od zwykle
agent pocztowy działa głównie z jednym plikiem reguł, oszczędza to narzutu
za każdym razem rekompilując wszystkie reguły. (opcjonalnie, sugerowane: $spool/rulecache).
Zweryfikowano Ustaw tę opcję na WŁ., aby włączyć podstawienia makr we wzorcach reguł. (opcjonalny,
domyślnie: WYŁ.).
reguły Nazwa pliku zawierającego reguły filtrowania (opcjonalnie w systemach innych niż Debian
proponowane systemy: ~/.zasady). W systemach Debian trzeba mieć minimalne reguły
plik, aby zapobiec agent pocztowy od prób umieszczania wiadomości w
/var/bufora/poczta/$UŻYTKOWNIK, ponieważ mailagent nie może zablokować tego katalogu, aby uniemożliwić pocztę
od bycia zniekształconym. Dzieje się tak, ponieważ polityka Debiana wymaga wszystkich jednostek
próbując zablokować ten katalog sgid Poczta, i robienie agent pocztowy sgid
wszystko byłoby luką w zabezpieczeniach.
{ ZAPISZ przychodzące };
jest sugerowanym minimalnym plikiem reguł.
bieg maks Przekroczono limit czasu dla poleceń RUN i znajomych. (opcjonalnie, domyślnie: 3600).
skryptcc Flaga wskazująca, czy należy wysłać kopię transkrypcji sesji SERWERA
do użytkownika uruchamiającego program pocztowy. (sugerowane: WYŁ.).
bezpieczne Po ustawieniu na ON, mailagent i filtr C zapewnią rozległą ochronę
sprawdza wrażliwe pliki. Obejmuje to sprawdzanie możliwości zapisu grupowego,
własności i testowanie ochrony w katalogu, w którym znajduje się plik, oraz
sprawdza dowiązania symboliczne do katalogów (tylko mailagent, gdy linkdirs jest włączone
zbyt). Zauważ, że zakłada się, że zabezpieczenie jest WŁĄCZONE, niezależnie od jego rzeczywistego ustawienia i kiedy
działa jako superużytkownik. (sugerowane: WŁ.).
Wyślij maila Nazwa programu używanego do wysyłania poczty. Ten program musi akceptować pocztę
wiadomość z nagłówkami na standardowym wejściu i listą odbiorców na
wiersz poleceń. Jeśli nie zostanie określony, użyje programu pocztowego wybranego w czasie konfiguracji
(zwykle wysyłaj pocztę). Wiersz poleceń użyty do wysłania wiadomości będzie następujący Wyślij maila
mailopt adres(y). (opcjonalnie, sugerowane: /usr/lib/sendmail).
wyślij wiadomości Nazwa programu używanego do publikowania wiadomości. Ten program musi zaakceptować wiadomości
artykuł z nagłówkami na jego standardowym wejściu. Jeśli nie zostanie określony, użyje wiadomości
program wysyłający wybrany podczas konfiguracji (zwykle inews). Linia poleceń
używany do opublikowania artykułu będzie wyślij wiadomości -h newsopt. (opcjonalnie, sugerowane:
/usr/local/bin/inews).
nast Plik używany do obliczania numerów zadań (sugerowany: .seq).
serwer Nazwa katalogu, w którym są przechowywane polecenia serwera powłoki i perla. To jest
domyślne miejsce wyszukiwania. Parametr opcjonalny, chyba że użyto SERWERA. (zasugerował:
$szpula/cmds).
powłoka serwa To jest nazwa powłoki używanej do uruchamiania poleceń powłoki SERWERA (właściwie do
przetworzyć plik opakowujący, który ostatecznie wykona polecenie exec(). Na niektórych
systemy takie jak HPUX 10.x, to musi być ustawione na /usr/old/bin/sh, aby uzyskać zwykły
stara powłoka Bourne'a, ponieważ / Bin / sh to martwa umysłowo powłoka POSIX, która zamyka plik
deskryptory większe niż 2 po exec(), podczas gdy powłoka Bourne'a tego nie robi.
(opcjonalnie, sugerowane: / Bin / sh chyba że korzystasz z HPUX 10.x, jak wyjaśniono wcześniej).
szpula Katalog buforowania, wymagany (sugerowane: ~/var/mailagent).
plik stat Plik, w którym mają być gromadzone statystyki. Jeśli taki plik nie istnieje, nie ma statystyk
zostanie nagrany (sugerowany: $spool/mailagent.st).
udawać Czy agent pocztowy powinien sfałszować linię Do: w nagłówku wiadomości, kiedy to
jest nieobecny, który zostanie użyty do celów filtrowania (bez fizycznej zmiany
występuje nagłówek). Używa nagłówków Alternate-To:, jeśli zostaną znalezione, w przeciwnym razie zakłada
wiadomość została wysłana do użytkownika i przyjmuje wartość z użytkownik konfiguracja
zmienny. (opcjonalne, domyślnie włączone, sugerowane: włączone; wyłącz je tylko wtedy, gdy
chcą zidentyfikować brakujące linie Do: do wykrywania SPAMU).
Dla mnie Ta opcjonalna zmienna może zawierać oddzieloną przecinkami listę alternatywnych loginów
które są również ważne dla użytkownika (aliasy pocztowe). Jest to używane w trybie urlopowym
aby sprawdzić, czy wiadomość została wysłana do użytkownika, czy na listę mailingową. Dopasowanie
jest zakotwiczony w nazwie logowania, więc powiedzenie „ro*” będzie pasować do obu korzeń oraz rom.
śledzić Ustaw on (wielkość liter nie ma znaczenia), to włącza -t opcja, która śledzi wszystkie
dopasowania reguł i akcje na standardowym wyjściu. Jest to opcjonalne (sugerowane:
WYŁĄCZONY).
stref czasowych Wartość strefy czasowej dla zmiennej środowiskowej TZ (opcjonalnie).
tmpdir Katalog plików tymczasowych. Wymagane (sugerowane: / Tmp).
umaska Domyślny umask, który jest resetowany przez agent pocztowy przed przetworzeniem wiadomości. Przypuszczalny
być dziesiętny, chyba że zaczyna się od „0” (dla systemu ósemkowego) lub „0x” (dla systemu szesnastkowego).
Niemniej jednak format ósemkowy jest najłatwiejszym sposobem określenia go. (opcjonalny,
domyślnie: 077).
użytkownik Nazwa logowania użytkownika, który uruchamia program mailagent. To ustawia wartość makra %u.
wakacje Flaga ustawiona na ON lub OFF, aby odpowiednio przełączyć tryb urlopowy.
plik vac Nazwa pliku do odesłania w trybie urlopowym (sugerowane: ~/.wakacje).
zaszczepiony Kiedy ON, wszystkie zmiany w pliku urlopowym (nawet lokalnie) za pomocą
polecenie VACATION jest zabronione. Jest to przydatne, jeśli zwykle masz ich wiele
dostosowane wiadomości urlopowe dla różnych osób, ale tymczasowo chcą wymusić
jeden unikalny komunikat (opcjonalnie, domyślnie: WYŁ.).
okres wakacji Minimalny czas, jaki upłynął między dwiema wiadomościami urlopowymi wysłanymi pod dany adres
(sugerowane: 1d).

Dostępny Logowanie Poziomy
Podczas uruchamiania programu mailagent można używać następujących poziomów dziennika:

0 Brak logowania
1 Tylko poważne problemy
2 Nieudane dostawy
3 Udane dostawy
4 Odroczone wiadomości
5 Udanych akcji filtrowania
6 Niezwykłe, ale łagodne incydenty
7 Komunikaty informacyjne
8 działań filtrujących niedostarczenie
9 Odbiór poczty
12 Debugowanie
19 Rozwlekły
20 Dużo więcej gadatliwości

Podłączanie agent pocztowy
Po skonfigurowaniu agenta pocztowego w pliku a ~/.agent pocztowy (gdzie ~ oznacza Twój dom
katalog), musisz powiedzieć Wyślij maila jak to wywołać. Odbywa się to poprzez ustawienie a ~/.do przodu
plik, który wygląda tak (podwójne cudzysłowy wiodące i końcowe są obowiązkową częścią
To):

"| exec /users/ram/mail/filter >>/users/ram/.bak 2>&1"

Spowoduje to potokowanie wszystkich wiadomości e-mail do filtrować program, przekierowując wszystkie nietypowe wiadomości do
~/.bak. Przykładowy skrypt powłoki filtra można znaleźć w Lib/mail agent, a także filtr C
program. W niektórych systemach może być konieczne przeniesienie znaku „|” postać przed prowadzącym
zacytuj, ale nie próbuj tego, chyba że nie masz innego wyboru (tj. tylko w ostateczności).
Najwyraźniej też Exim bierze wyjątek od exec, a może nawet od przekierowania -
co byłoby szkoda.

Jest początku. ważne jest, aby przekierować komunikaty o błędach do jakiegoś pliku w katalogu domowym.
Po pierwsze, to wyciągnie cię z kłopotów, jeśli zaczną się dziać dziwne rzeczy, ale
bardziej do rzeczy, to sprawia, że ​​twój .Naprzód plik unikalny. Starszy Wyślij maila program, w
heroiczna próba „optymalizacji” dostawy, po cichu usunie zduplikowanych odbiorców, a jeśli a
odbiorca ma .Naprzód, jego dosłowna treść jest używana zamiast jego adresu e-mail.
W związku z tym dwóch lokalnych odbiorców z tym samym ciągiem filtrującym będzie traktowanych jako jeden
unikalny odbiorca i tylko jeden z nich otrzyma wiadomość...

Jeśli twój system nie zezwala na przekierowanie powłoki z .forward, możesz tego użyć
zamiast tego (obsługiwane tylko przez filtr C):

"| exec /users/ram/mail/filter -o /users/ram/.bak"

co w efekcie przekierowuje stdout oraz stderr do określonego pliku, dołączając dane
na końcu pliku. Jeśli filtr działa z setuid lub setgid, nie będziesz mógł tego zrobić
utworzyć plik ani dołączyć do niego, chyba że właścicielem pliku jest real wywołanie uid
programu (ze względów bezpieczeństwa).

Zauważ, że .Naprzód file tylko przesyła pocztę do filtrować program i nie wychodzi
jakakolwiek kopia w skrzynce pocztowej. To Ty decydujesz w pliku reguł, czy chcesz
wyrzuć pocztę lub zostaw ją w skrzynce pocztowej. (Zauważ, że w systemach Debian agent pocztowy mogą
nie blokuj katalogu spool, a pozostawienie poczty w skrzynce pocztowej może spowodować jej pobranie
zniekształcony). Jeśli nie masz pliku z regułami (tj. zostawiłeś pusty wpis w swoim
~/.agent pocztowy, albo nazwałeś nieistniejący plik, albo twój plik jest po prostu pusty), the
domyślną akcją jest pozostawienie poczty w skrzynce pocztowej, co nie jest dobrym pomysłem dla Debiana
maszyny. W każdym przypadku zainstaluj minimalny plik reguł,
{ ZAPISZ przychodzące };
jest sugerowanym minimalnym plikiem reguł.

Dozwolony Polecenia
Dozwolony plik poleceń (określony przez skomplikuj zmienna w twoim ~/.agent pocztowy)
zawiera wszystkie rozpoznane i dozwolone polecenia. Plik Polecenia przechowywane w katalogu
Lib/mail agent powinien zostać skopiowany bez zmian do katalogu Spool.

Testy Twoje instalacja sprzętu
Teraz, zakładając, że ustawiłeś właściwy ~/.agent pocztowy plik i edytowałem sekcję konfiguracji
ukończenia filtrować, nadszedł czas na przetestowanie instalacji. Upewnij się, że twój .Naprzód to świat
czytelne i że filtrować ma ustawione bity wykonania (nie ma powodu, aby
filtrować czytelne dla świata). Ustaw poziom dziennika na 20 i wyłącz tryb wakacyjny (tzw wakacje
wpis w ~/.agent pocztowy powinien być wyłączony). Ustaw nazwę pliku reguł na plik
zawierające regułę typu catch-all:
{ ZAPISZ przychodzące };
Jesteś gotowy, aby kontynuować...

Wyślij do siebie wiadomość i daj agentowi czas na przetworzenie Twojej poczty. Temat
wiadomość powinna brzmieć „test” (w rzeczywistości cokolwiek innego niż „Polecenie”). Możesz chcieć uruchomić „ogon
-f logfile", aby zobaczyć, co się dzieje. Pod koniec przetwarzania plik dziennika powinien
zawierać coś takiego jak poniżej (nazwy elementów tymczasowych mogą - i będą - oczywiście
różnić się; znaczniki czasu zostały usunięte):

otrzymałem prawo do przetwarzania poczty
budowania domyślnych reguł
analizowanie poczty
analizowanie poczty
w trybie „INITIAL” dla WSZYSTKICH
selektor „Wszystkie” na „<1,->”, wzór „/^ Temat: [DW]polecenie/”
dopasowanie „/^ Temat: [Cc]polecenie/” na „Wszystkie” (<1,->) było fałszywe
selektor „Wszystkie” na „<1,->”
dopasowanie . na „Wszystkie” (<1,->) było prawdziwe
zapisywanie w folderze przychodzącym
XEQ (ODEJDŹ)
rozpoczęcie WYJAZDU
uruchamiając SAVE /home/ram/mail/incoming
ZAPISANE [qm7831] w folderze przychodzącym
FILTROWANE [qm7831] z barana (Raphael Manfredi)
agent pocztowy kontynuuje
wyjścia programu pocztowego

Jeśli tego nie rozumiesz, to gdzieś jest problem. Zacznij od spojrzenia na ~/.bak filet
(lub jakikolwiek plik .Naprzód używa do przekierowania wyjścia filtra). Jeśli zobaczysz
coś jak:

FATAL brak poprawnego katalogu kolejki
WPUSZCZONY W ~/mbox.filter

wtedy oznacza kolejka parametr w twoim ~/.agent pocztowy nie wskazuje na prawidłowy
informator. Twoja poczta została wrzucona do awaryjnej skrzynki pocztowej.

~/.bak plik może również zawierać komunikaty o błędach stwierdzające, że Perl nie znaleziono. W tym
przypadku w pliku dziennika powinien pojawić się komunikat o błędzie:

BŁĄD Mailagent nie powiódł się, [qm7886] pozostało w kolejce

W takim przypadku upewnij się, że poczta została prawidłowo umieszczona w kolejce w pliku qm7886. Kolejka
zostanie przetworzony ponownie, gdy nadejdzie kolejna poczta lub gdy agent pocztowy jest wywoływany z -q
(Jednakże, aby uniknąć warunków wyścigu, tylko listy, które pozostały przez jakiś czas, będą
obrobiony).

Kolejkowanie poczty ma miejsce również wtedy, gdy inna agent pocztowy biegnie. Jeśli plik dziennika mówi:

odmówiono prawa do przetwarzania poczty

następnie usuń perl.lock plik w katalogu Spool. Stare pliki blokady są automatycznie
odrzucone przez agent pocztowy w każdym razie (po godzinie).

Jeśli żadna z tych sytuacji nie wystąpi, to być może Wyślij maila nie przetworzył twojego ~/.do przodu w ogóle lub
plik zawiera błąd składni. Sprawdź swoją skrzynkę pocztową, a jeśli jest tam twoja poczta, twoja .Naprzód
nie zostało przetworzone. W przeciwnym razie poproś administratora systemu o sprawdzenie Wyślij maila's
plik dziennika. Prawidłowy wpis pojawiłby się jako (z wiodącymi znacznikami czasu i znacznikami dziennika systemowego
REMOVED):

identyfikator-wiadomości=[email chroniony]>
from=ram, size=395, class=0, otrzymane od local
to="| /york/ram/mail/filter >>/york/ram/.bak 2>&1", opóźnienie=00:00:05, stat=wysłane

Jeśli nadal nie możesz znaleźć powodu, dla którego poczta nie została poprawnie przetworzona, powinieneś się upewnić
zwykle otrzymujesz pocztę, usuwając (lub zmieniając nazwę) plik ~/.do przodu i wysyłanie siebie
kolejny testowy mail. Upewnij się również, że twój katalog domowy jest czytelny dla wszystkich i „wykonywalny”.

Jeśli używasz filtra C, upewnij się, że działa na właściwej platformie. Może
być trasowaniem niskiego poziomu całej poczty do a host poczty maszyna odpowiedzialna za finał
dostawy, a program filtrujący będzie działał na tej maszynie, która może być inna
platforma niż ta, na której skompilowałeś filtr. Upewnij się również, że twój katalog domowy to
zainstalowany na tej maszynie, inaczej agent transportu poczty nie będzie w stanie zlokalizować twojego
.Naprzód plik, mniej go przetwarzaj.

Ten rodzaj scentralizowanego dostarczania poczty jest dobry tylko wtedy, gdy kilka osób przetwarza pocztę
haczyki (tzw .Naprzód pliki przesyłające pocztę do programu); w przeciwnym razie lepiej jest kierować pocztę
do stacji roboczej lub maszyny każdego użytkownika, w celu lokalnego przetwarzania, aby uniknąć nadmiernej liczby
obciążenie pracą na host poczty maszynie, zwłaszcza jeśli jest to dedykowany serwer NFS. jeśli jesteś
instalowanie administratora systemu agent pocztowy i oczekujesz, że wiele osób będzie z niego korzystać, zachowaj to dla siebie
umysł.

OPCJE


Istnieje ograniczony zestaw opcji, których można użyć, dzwoniąc bezpośrednio do agenta pocztowego.
Jednorazowo można określić tylko jedną opcję specjalną. Wywoływanie agenta pocztowego jako kolejka pocztowa is
równoważne użyciu -l opcja.

-c filet Określ alternatywny plik konfiguracyjny (następuje podstawienie ~). The
wartość domyślna to ~/.agent pocztowy.

-d Agent pocztowy analizuje plik reguł, kompiluje reguły i zrzuca je
standardowe wyjście. Ta opcja jest używana głównie do sprawdzania składni pliku
plik reguł i upewnij się, że reguły są takie, jak naprawdę myśli użytkownik.

-e rządzić Ta opcja pozwala określić pewne reguły w wierszu poleceń, które będą
zastąpić te określone przez ~/.agent pocztowy, Jeśli w ogóle. Może być tyle samo
-e w razie potrzeby wszystkie zasady są łączone razem w jedną szczęśliwą
array, który jest następnie analizowany w taki sam sposób jak plik reguł. Gdyby tylko pierwszej rządzić
jest podany i nie ma określonej akcji między nawiasami klamrowymi {...}, to
cała linia jest ujęta w nawiasy klamrowe. Stąd mówiąc -e 'RATOWAĆ bla' będzie
rozumiany jako -e '{RATOWAĆ bla}', które zawsze będą pasować i będą wykonywane.
Korzystanie z -d opcja w połączeniu z tą jest wygodnym sposobem
debugować zestaw reguł.

-f plik poczty Korzystanie z plik poczty jako skrzynkę pocztową w stylu UNIX (tj. taką, w której znajduje się każda poczta
poprzedzone specjalnym wierszem Od zawierającym nadawcę i datę wysłania wiadomości
został wydany), wyodrębnij wszystkie swoje komunikaty do kolejki i przetwórz je tak, jakby
zostały świeżo dostarczone z podsystemu dostarczania poczty.

-F Wymuś przetwarzanie już widzianych wiadomości. Zazwyczaj, agent pocztowy wchodzi do
specjalny _JEZIORA_ stan, gdy wykryje Filtr X: linia wydawana przez siebie,
ale ta opcja spowoduje, że będzie kontynuowana jak zwykle (chociaż wiadomości urlopowe
są niepełnosprawni). Użyj tej opcji, gdy poczta post-processingu została już przefiltrowana.
Zajrzyj też do -U przełącz, jeśli używasz akcji ZAPIS lub UNIKALNE w
niektóre zasady.

-h Wydrukuj komunikat o użyciu standardowego błędu i wyjdź.

-i Tryb interaktywny nakazuje agentowi pocztowemu wydrukowanie kopii wszystkich komunikatów dziennika
on stderr.

-I Zainstaluj a ~/.agent pocztowy plik z szablonu lub scalić nową konfigurację
zmienne do istniejącego pliku; następnie wykonaj testy poprawności i utwórz
obowiązkowe pliki lub katalogi. Ta opcja może być postrzegana jako pomoc w
konfigurowania agent pocztowyśrodowisko. W każdym razie utworzony/połączony
~/.agent pocztowy plik powinien zostać ręcznie zweryfikowany przed zezwoleniem agent pocztowy sprawa
z twoją pocztą, podłączając ją do ~/.do przodu.

-l Wyświetl kolejkę agenta poczty. Ostatnio oczekujące w kolejce maile, na które czeka
filtrować jest pominięte przez około pół godziny, aby uniknąć wyścigu. Ten
można skonfigurować za pomocą przetrzymanie w kolejce zmienny. Naprawdę stare wiadomości (więcej
niż zagubiony w kolejce sekundy) są oznaczone znakiem „#”. Wiadomości wychodzące
z kolejki (kolejka zmienna) są oznaczane znakiem „*”, podczas gdy stare wiadomości
poza kolejką są sygnalizowane znakiem „@”. Zablokowane wiadomości mają znak „*”
dołączone do ich statusu.

-L poziom Zastąp poziom dziennika określony w pliku konfiguracyjnym.

-o Zastąp Ta opcja umożliwia zastąpienie określonej opcji konfiguracji. Opcja
musi następować poprawna linia konfiguracji, która zostanie później przeanalizowana
sam plik konfiguracyjny. Na przykład -L 4 opcja jest całkowicie
równoważny -o 'poziom: 4'. Pamiętaj, że każda biała przestrzeń musi być chroniona
przed interpretacją powłoki za pomocą odpowiedniego mechanizmu cytowania.
Może być tyle samo -o opcje w wierszu poleceń, jeśli to konieczne.

-q Wymuś przetwarzanie kolejki agenta pocztowego. Tylko wiadomości e-mail nieoznaczone jako pominięte
przez -l opcja zostanie przetworzona.

-r filet Określ alternatywny plik reguł.

-s {umaryt} Zbuduj podsumowanie wszystkich zebranych do tej pory statystyk. Wyjście może być
kontrolowane przez dodanie jednej lub więcej liter ze zbioru {umaryt}. Za pomocą
-streszczenie to wygodny sposób na uzyskanie całej historii filtra
działania. ten u modyfikator wydrukuje tylko używane reguły. The m połączy wszystkie
statystyki na koniec podczas a informuje o trybie, w jakim znajdował się filtr
polecenie zostało wykonane. The r prosi o statystyki oparte na regułach i y is
całkiem bezużyteczny i jest tutaj tylko po to, aby uzyskać fajną opcję mnemoniczną. Zauważ to
określenie opcji więcej niż jeden raz nie ma żadnego wpływu na opcję
się (tj. możesz umieścić trzy Uu i tylko jeden m, ale i tak dostaniesz
streszczenie!). The t po literze mogą następować cyfry określające liczbę reguł
wersje plików względem najwyższego (ostatniego) pliku reguł, który powinniśmy
wyciąg ze statystyk, że kwota domyślnie wynosi 1: za pomocą -surat będzie
wydrukować pełny raport statystyczny dla ostatniej wersji Twoich reguł,
jednocześnie -surt12a zrobiłby to samo dla ostatnich dwunastu wersji tych samych
zasady.

-t Umieść agenta pocztowego w specjalnym trybie śledzenia, w którym wszystkie reguły są zgodne i
wykonane akcje są drukowane na standardowym wyjściu. Jest to głównie przydatne
do debugowania pliku reguł. Zobacz także śledzić parametr w
plik konfiguracyjny.

-V Wydrukuj numer wersji i wyjdź.

-U Zapobiegaj odrzuceniu już przetworzonych poleceń UNIQUE i RECORD
Message-ID przy pierwszym uruchomieniu dla danego komunikatu. to jest przydatne
podczas przetwarzania wiadomości, które zostały porzucone w katalog emerg katalog
z powodu jakiegoś nienormalnego (ale przejściowego) stanu i chcesz ponownie przetworzyć
wiadomość. Zobacz także -F przełącz, jeśli ponownie przetwarzasz wiadomości.

Jeśli wywołasz program mailagent bez opcji i bez żadnych argumentów, program czeka na a
mail na standardowe wejście. Jeśli podano argument, jest to nazwa zbioru plików
jedna poczta do przetworzenia. Jest to normalna procedura wywołania z filtra, the
argumentem jest lokalizacja poczty oczekującej w kolejce.

ZA POMOCĄ THE DEFAULT ZASADY


Jeśli nie chcesz korzystać z funkcji filtrowania programu mailagent, (UWAGA: Może to spowodować pocztę
być zniekształcone w systemach Debian, ponieważ agent pocztowy nie można zablokować katalogu spol w
ograniczenia polityki Debiana), wtedy zostaną użyte domyślne wbudowane reguły. To są
naprawdę proste: wszystkie wiadomości e-mail pozostają w Twojej skrzynce pocztowej, a wiadomości z wierszem „Temat:
Polecenie” w dowolnym miejscu wiadomości zostanie przetworzone. Polecenia są wyszukiwane w wierszach
zaczynające się od „@SH”. Pozostała część wiersza jest następnie przekazywana powłoce do wykonania.

Dostępne komendy odczytywane są z pliku (entry skomplikuj w pliku konfiguracyjnym), jeden
nazwa polecenia w wierszu. Tylko ci, którzy są tam wymienieni, zostaną straceni, inni wyprodukują
Komunikat o błędzie. Agent pocztowy przechwytuje status wyjścia i wyśle ​​raport o błędzie, jeśli a
polecenie nie powiedzie się (pod warunkiem, że polecenie samo nie wyświetli komunikatu, w takim przypadku
powinien zwrócić zerowy status wyjścia).

Jeśli nie chcesz używać domyślnych reguł, możesz pominąć pozostałą część tej sekcji.

Konfigurowanie Pomoc
Pomoc tekstowa, którą agent pocztowy wyśle ​​do ludzi, musi zostać skopiowana Lib/mailagent/agenthelp
do własnego katalogu spool, jak określono w pliku your ~/.agent pocztowy. Można użyć dwóch makr:

=DEST= Zostanie to rozszerzone na adres nadawcy (tego, który wysłał Ci wiadomość
aktualnie przetwarzane przez agenta pocztowego).

=MAKS.ROZMIAR= Oznacza to maksymalny rozmiar ustawiony wcześniej zestaw służy do odsyłania plików
(parametr największy rozmiar w telefonie ~/.agent pocztowy plik).

Możesz skorzystać z domyślnego pliku pomocy lub zaprojektować taki, który poda jeszcze więcej szczegółów
biedny użytkownik.

Dystrybucja Akta
Dwa pliki proglista oraz dystrybucja odbyło się w Lib/mail agent opisz swoje dystrybucje
mailagent będzie mógł dystrybuować. Podane przykłady pokazują oczekiwaną składnię. W
aby wszystko wyjaśnić, oto jaki powinien być format:

filet proglista zawiera mały opis programów. Pojawi się nazwa programu
po jednej gwiazdce. Po nim następują wiersze w dowolnym formacie. Opcjonalna linia z trzema kreskami
oddziela opis każdego programu. Zauważ, że do każdego wiersza zostanie dodana wiodąca zakładka
opisu.

dystrybucja plik zawiera wiersze o następującej postaci:

program wersja ścieżka w archiwum sprężony łaty

gdzie:

program to nazwa programu (taka sama jak wymieniona w proglista).

wersja to aktualny numer wersji. Jeśli nie ma, można użyć linii z trzema kreskami.

ścieżka to ścieżka, w której przechowywana jest dystrybucja. ~ zostanie rozwinięty do twojego
katalog domowy. Zauważ, że jeśli dystrybucja jest przechowywana w formie zarchiwizowanej, plik
nazwa ścieżki to nazwa archiwum bez końcowego rozszerzenia (które może być
.cpio.Z or .tar.Z).

w archiwum jest albo y or n w zależności od tego, czy dystrybucja jest zarchiwizowana, czy nie.

sprężony
jest albo y or n w zależności od tego, czy dystrybucja jest skompresowana, czy nie.
Można to odgadnąć po nazwie rozszerzenia, ale musimy pomyśleć o pliku
systemy o krótkich nazwach.

łaty is y or n w zależności od tego, czy dystrybucja jest utrzymywana przez Ciebie, czy nie. Jeśli
położyłeś p, oznacza to, że oficjalne łatki są dostępne, chociaż Ty ich nie masz
utrzymać dystrybucję. Wreszcie an o oznacza, że ​​jest to stara wersja,
gdzie dostępne są tylko łatki, ale maildist nie będzie działać. W tym wypadku,
zakładając, że numer wersji to 1.0, stare łaty są spodziewane w pliku a błędy-1.0
katalogiem.

Możesz dołączyć komentarze w obu plikach: wszystkie linie zaczynające się od wiodącego # będą
ignorowane.

Testy Twoje Poczta Agent
Nadszedł czas, aby upewnić się, że Twój agent pocztowy działa. Wyślij do siebie następującą wiadomość:

Temat: Komenda
Pomoc pocztowa @SH

Powinieneś otrzymać zwrotną wiadomość od siebie z tematem ustawionym na: „Jak korzystać z my
mailagent”. Jeśli nie, sprawdź plik ~/.bak (lub jakikolwiek plik, który ustawiłeś w swoim
.Naprzód). Jeśli jest pusty, spójrz na plik dziennika. Jeśli plik dziennika nie jest pusty, to
być może poczta została umieszczona w kolejce. Sprawdź Wyślij maila kolejka. Upewnij się również, że ty
usunięto komentarze „#” w pliku filtrować scenariusz. W niektórych systemach powodują pewne problemy.
Jeśli używasz filtra C, być może twój sendmail jest zepsuty i musisz stworzyć własny
setuid copy (lub Perl może narzekać, że masz błąd jądra itp.).

Jeśli zrobiłeś wszystko dobrze, ale nadal nie działa poprawnie, zwiększ poziom logowania
do 20 i ponownie wyślij wiadomość z poleceniami. Następnie sprawdź plik dziennika. Diagnoza powinna być
łatwiejsze.

Gdy to zadziała, powinieneś sprawdzić swój dystrybucja oraz proglista pliki, wysyłając sobie plik
następująca poczta:

Temat: Komenda
Lista mailowa @SH

Jeśli lista, którą otrzymałeś w zamian, jest niepoprawna, oznacza to, że twoje pliki dystrybucyjne są błędne
pisemny. Jeśli nie otrzymasz listy, wystąpił problem z agentem pocztowym
konfiguracja. Spróbuj ponownie z poziomem dziennika ustawionym na 20 i przejrzyj wystawione komunikaty dziennika
swój katalog dziennika. Upewnij się, że plik wymieniony w proszę zapisz wpis twojego
~/.agent pocztowy jest poprawnie aktualizowany po a Lista maili został uruchomiony.

ZA POMOCĄ THE FILTER


agent pocztowy może być również używany jako filtr: poczta jest analizowana i podejmowane są pewne działania
oparty na prostych lex-jak zasady. Akcje obejmują proste zapisywanie w folderze, a
przekazywanie do innej osoby, a nawet odradzanie polecenia powłoki. Przed pójściem dalej,
oto mały przykład poprawnego pliku reguł:

Od: root { PRZEKAZ poczmistrza };
Do: [email chroniony] { POST mail.gue};
Temat: /metaconfig/ { ZAPISZ odległość };
{ ZAPISZ przychodzące };

Istnieją trzy różne zasady. Reguły są stosowane w kolejności, aż jedna pasuje (więc
ważna jest kolejność). Każda poczta pochodząca z korzeń zostaną przekazane użytkownikowi naczelnik poczty, ZA
poczta adresowana do [email chroniony] to wiadomość e-mail pochodząca z listy mailingowej. Poczta jest wysłana
na lokalnej grupie dyskusyjnej poczta. gue. Maile, których temat zawiera słowo „metaconfig”, będą
zapisane w folderze dist do opóźnionego czytania i nie pojawi się w głównej skrzynce pocztowej. Jeśli nie
reguła jest zgodna, poczta pozostaje w folderze przychodzące.

Zasada filet Składnia
Oto nieformalny opis pliku reguł. Parsowanie pliku odbywa się leksykalnie,
stąd wybór niejednoznacznych tokenów, takich jak „{” lub „;” które są łatwo analizowane. Ten
wprowadza pewne ograniczenia, które są stosowane po cichu: na przykład nie można użyć znaku „{”.
jako część adresu.

Komentarze są wprowadzane przez wiodący znak „#”, który musi znajdować się na lewym marginesie. W przeciwieństwie do skorupy
komentarzy, znak „#”, który nie jest wyrównany do lewej strony, nie będzie rozumiany jako komentarz. Jednakże,
spacje lub tabulatory są dozwolone przed „#”.

Wszystkie instrukcje w pliku reguł muszą kończyć się znakiem „;”. Są to głównie cztery części
każda linia. Lista trybów oddzielonych przecinkami, między „<” a „>”, które dają zbiór
tryby, w których obowiązuje reguła. Specjalny tryb ALL pasuje do wszystkiego. Filtr
rozpoczyna się w trybie INITIAL. Pominięcie domyślnego trybu to „ „. Można pilnować
reguła przeciwko określonemu trybowi poprzez zanegowanie go, co odbywa się poprzez poprzedzenie trybu przedrostkiem
'!'. Tryby zanegowane mają pierwszeństwo przed innymi zwykłymi trybami, co oznacza „ " nigdy nie będzie
dopasowane, zawsze, i że " " jest równa " ".

Następnie pojawia się lista selektorów. Te selektory muszą być oddzielone spacjami i kończyć się znakiem „:”.
Reprezentują one nazwy pól nagłówka, którym należy się przyjrzeć w przyszłości
wzór. Pusta lista selektorów domyślnie ma wartość „Temat:”. Specjalne selektory „Wszystko:”, „Body:”
i „Head:” odnoszą się do całej wiadomości, jej treści lub nagłówka. Powszechnie używany selektor
list to „Do DW:”, która sprawdza pola adresatów nagłówka. Jeśli nazwa selektora to
poprzedzony wykrzyknikiem „!”, a następnie wartość logiczna testu dla tego selektora
jest zanegowane.

Lista selektorów może kończyć się opcjonalną specyfikacją zakresu, podaną jako <min, maks.>,
przed ostatnim znakiem ':' oznaczającym koniec listy selektorów. Minimalne lub
maksimum może być podane jako '-', w którym to przypadku jest zastępowane przez minimum lub maksimum
możliwa wartość. Indeksy wyboru zaczynają się od 1 (nie 0), na przykład: <3, 7>, Jeśli nie
podany jest wybór zakresu, a następnie wartość domyślna <1, -> Jest używane. Zakresy zwykle wybierają linie
w pasującym buforze, chyba że selektor oczekuje listy, w takim przypadku
działa na elementach listy. Na przykład, Ciało <3, 5>: wybrałby linie od #3 do #5
(w zestawie) z treści poczty, podczas gdy Do Cc <1,3>: skoncentruje się na pierwszej trójce
adresy w każdym wierszu nagłówka Do: lub DW:. Wartości ujemne odnoszą się do tej liczby linii lub
adresy wstecz od końca, tj Cc <-2,->: wybiera dwa ostatnie adresy na DW:
linia. Pojedynczy numer, np jest rozumiany jako <2, 2>, tzn. wybiera tylko jeden element
na liście, <-> oznacza wszystko (i dlatego jest zbędny).

Następnie po selektorze następuje wzorzec w obrębie znaku „/” lub pojedyncza nazwa. W celu
ułatwić pisanie zasad, semantyka pojedynczej nazwy różni się w zależności od
używany selektor. Dla specjalnych selektorów „Od:”, „Do:”, „DW:”, „Nadawca:”, ich
powiązane pola „Resent-”, „Reply-To:”, „Envelope:” i „Apparently-To:”, pojedyncza nazwa
jest rozumiany jako dopasowanie na Zaloguj Się Nazwa adresu. Zauważ, że jeśli nie ma pola „Do:”.
obecny w nagłówku, jeden zostanie sfałszowany z „Najwyraźniej do:” w celu
tylko filtrowanie (tj. nie jest wykonywana żadna fizyczna modyfikacja nagłówka). Jeśli nazwa logowania użytkownika
adres jest pełną nazwą postaci Imię.Nazwisko, zachowane jest tylko nazwisko i jest
małymi literami. Jeśli podano tylko jedną nazwę, tylko metaznaki powłoki * i ? Czy
dozwolone, a także interwały [].

Jeżeli wzorzec jest poprzedzony pojedynczym wykrzyknikiem '!', to stan dopasowania to
zanegowany (tj. powiedzie się, jeśli wzorzec nie zostanie znaleziony). Jeśli używane jest jedno słowo
selektory inne niż specjalne, obowiązują te same zasady, ale wzór jest zakotwiczony na początku
i koniec dla dokładnego dopasowania. We wzorcu zaczynającym się od „/” dowolne wyrażenie regularne
zrozumiałe przez Perl mogą być używane, a Twój wzór nie zostanie w żaden sposób zmodyfikowany. Inny
specjalny selektor „Grupy dyskusyjne:” działa jak „Do:”, z tą różnicą, że oczekiwane są nazwy grup dyskusyjnych
i następuje próba dopasowania dla każdego elementu na liście. Każdy wzór pasuje do jednego imienia
dla pola typu adresowego (tj. „Grupy dyskusyjne:” wykluczone), nie rozróżniają wielkości liter
tryb. W przeciwnym razie możesz wymusić dopasowanie bez rozróżniania wielkości liter, dołączając końcowy znak i opcja,
jak w /wzór/i.

Dopasowywanie w polu adresowym wiąże się również z odrobiną magii. Mianowicie, jeśli
wzór nie jest pojedynczym słowem i jest zakotwiczony at dotychczasowy początek, wtedy tylko część adresowa
pola zostanie zachowana. Na przykład, jeśli mamy pole Od:, którego wartość to Raphael
Manfredi <[email chroniony]>, następnie wzór /Rafał/ pasowałby, ale nie /^Rafael/.
Zamiast tego, /^ram@.*$/ pasowałby, ale łatwiej to zrobić za pomocą jednego wzorca słów
baran, ponieważ skupia się tylko na nazwie logowania adresu i pasowałby również, gdyby
adres został zapisany jako eiffel.com!ram. Pojedynczy adres w formie internetowej, np
[email chroniony] jest niejawnie dopasowywany w adresowej części pola i nie wolno ci tego robić
uciec od „.” tak jak w wyrażeniu regularnym.

Może to brzmieć trochę skomplikowanie, ale ten projekt ma na celu ułatwienie pracy
użytkownik. Oto kilka innych przykładów:

# Mecz [email chroniony] jak również [email chroniony].
od: baran

# Mecz [email chroniony], baran ale nie [email chroniony]
Od: r[oa]*

# Mecz [email chroniony] ale nie [email chroniony]
Do DW: /^gue@eiffel\.fr/

# To będzie pasować [email chroniony] jak również [email chroniony]
Do DW: /gue@eiffel/

# Mecz comp.lang.perl ale nie comp.lang.perl.poezja (?)
Grupy dyskusyjne: comp.lang.perl

# Akceptuj wszystko oprócz wiadomości pochodzących z korzeń
Od: !root

Podczas próby dopasowania „Do:”, „DW:” lub „Wyraźnie-do:” lista adresów rozdzielona
oczekiwany jest przecinek, podczas gdy po „Od:” oczekiwany jest tylko jeden adres. Jeśli pominiesz
wzorca, będzie to rozumiane jako * (pamiętaj, że pojedyncze słowo używa powłoki meta-
znaków), które będą pasować do wszystkiego.

Następnie następuje akcja, którą należy podjąć, gdy wystąpi dopasowanie. Istnieje tylko ograniczony zestaw
ważne działania, które zostaną wkrótce szczegółowo opisane. Akcja jest ujęta w kręcone
nawiasy klamrowe „{” i „}”, a akcje są oddzielone lub zakończone (w zależności od gustu) przez a
';'. Nazwy akcji są pisane wielkimi literami dla czytelności, ale wielkość liter nie ma znaczenia. Jeśli
chcesz wstawić ';' w ramach reguły musi być poprzedzona znakiem a
ukośnik wsteczny. Podwójny ukośnik odwrotny jest tłumaczony na pojedynczy i każdy inny znak ucieczki
sekwencja zawierająca znak ukośnika odwrotnego jest ignorowana (tzn. \n zostanie zachowana dosłownie).

Pamiętaj, że reguła powinna kończyć się pojedynczym „;” po ostatnim „}”. Jest to możliwe
pomiń to końcowe „;”, ale ten pojedynczy token jest punktem ponownej synchronizacji dla błędu
powrót do zdrowia. Można jednak argumentować, że nie powinno być błędu składniowego, a zatem „;”
należy bezpiecznie pominąć. W razie wątpliwości sprawdź plik reguł z rozszerzeniem -d opcja.

Oto prototypowa reguła (używając Perl wyrażenia regularne; Proszę odnieść się do
podrozdział Regularna Expressions po więcej informacji):

Od: /^\[email chroniony]$/ {ZAPISZ Eiffela };

Ta reguła będzie brana pod uwagę tylko wtedy, gdy filtr jest w trybie ROOT (pamiętaj o tym
przetwarzanie rozpoczyna się w trybie INITIAL; użyj BEGIN, aby zmienić tryb, jak w lex). tak w
tryb ROOT, wszystko, co pochodzi od użytkownika znajdującego się w eiffel.com strona jest zapisana w
falcówka eiffel na odroczone czytanie. Wiadomość nie pojawi się w skrzynce pocztowej.

Reguła może mieć więcej niż jeden wybór. Identyczne selektory są
logicznie ored, podczas gdy inne są orazwyd. Wybory są oddzielone przecinkami. Dla
instancja,

Od: root, Do: ram, Od: ram, Temat: /\btest\b/ { USUŃ };

usunie wiadomość z korzeń or baran jeśli zostanie wysłany do baran i ma słowo test w tym
temat. Można również zapisać poprzednią regułę jako:

Od: root, ram, Do: ram, Temat: /\btest\b/ { USUŃ };

ponieważ jeśli nie zostanie podany żaden selektor, używany jest poprzedni (przy czym pierwszym selektorem jest
domyślnie „Temat:”.

W dowolnym miejscu pliku reguł można zdefiniować pewne zmienne. Lista uznanych
zmienne zostaną podane później. Na razie powiedzmy tak katalog pocztowy jest domyślnym katalogiem folderów.
Ta zmienna jest używana przez polecenie SAVE, gdy argument nie jest ścieżką bezwzględną.
Oprawa

maildir = ~/poczta;

pokieruje filtrem do użycia ~/poczta jako katalog folderów (domyślnie jest to ~/Poczta). Zanotuj
~ podstawienie i końcowe „;”. Nie jest możliwe (obecnie) modyfikowanie środowiska
ustawiając na przykład PATH.

Na koniec istnieje specjalna konstrukcja ładująca wzorce z pliku. Wzór w załączeniu
podwójne cudzysłowy oznaczają, że wzorce, które mają zostać zastosowane, należy pobrać z podanych
plik. Oczekuje się, że plik będzie znajdować się w katalogu filtr poczty jeśli nie jest to ścieżka absolutna
(~ następuje podstawienie). Jeśli zmienna nie jest ustawiona katalog pocztowy będzie użyty. Jeśli przypadkiem (!)
katalog pocztowy również nie jest ustawiony, używany jest katalog domowy. Plik powinien zawierać jeden wzór
na linię, komentarze powłoki (#) są dozwolone na początku każdej linii.

Po akcji mogą obowiązywać inne zasady. Zatem całkowicie poprawne jest następujące stwierdzenie:

Od:
ram {ZAPISZ RAM}
/plc/i {ZAPISZ plc}
root {ZAPISZ ~/admin }
/xyz/ { USUŃ }
„użytkownicy” { WYJDŹ }
;

Zwróć uwagę na użycie dołączenia pliku: wszyscy użytkownicy wymienieni w pliku Użytkownicy będą mieli swoje
poczta pozostawiona w systemowej skrzynce pocztowej. W przypadku tych załadowanych wzorców obowiązują zwykłe zasady.

Selektor Mieszana
Pojedyncza reguła może mieć różnorodny zestaw selektorów. Na przykład w następującej regule:

Od: ram, Do DW: root, !Temat: /test/, Od: raphael

mamy następujący zestaw { From, To DW, !Subject }. Wywoływane są pierwsze dwa selektory
kierować selektory, !Subject: nazywa się a negowane selektor. Selektor Do DW: to a grupa
selektor rozkładający się na dwa kierować selektory, podczas gdy From: jest atomowy selektor.
Wreszcie From: jest także selektorem wielokrotność zdarzenia. The wartość selektora jest
pasująca wartość logiczna statusu.

Niech D będzie zbiorem bezpośrednich selektorów i N zbiór zanegowanych selektorów, które tworzą a
podział R, zbiór wszystkich selektorów w regule. To jest do powiedzenia, R jest związek?
of D oraz N, D przecięte z N jest zbiorem pustym (trywialny dowód: selektor jest albo
bezpośrednie lub zanegowane). Jeśli albo D or N jest pusty, to nie jest to partycja, ale w tym przypadku
mamy albo D = R albo N = R.

Zdefiniujmy wartość logiczną zbioru S jako wartość logiczna, jaką miałby filtr
return, jeśli te reguły zostały rzeczywiście napisane. Następnie wartość logiczna D jest logiczne
wartość każdego elementu z operatorem logicznym AND rozdzielonym pomiędzy nimi, tj
wartość logiczna { a, b, c } jest wartością (a ORAZ b ORAZ c). Napiszmy to ORAZ(D).
Wartość logiczna każdego z elementów jest wartością logiczną samego selektora, jeśli tak jest
nie jest wielokrotnością lub jest wartością logiczną wszystkich wystąpień selektora wielokrotnego
w ramach reguły, z rozdzieloną między nimi operacją logiczną OR. To znaczy w
w powyższym przykładzie wartość From jest prawdziwa, jeśli pola From: zawierają baran OR raphael.
Zapiszmy to OR[From].

Aby zachować zdrowy rozsądek, musimy zastosować prawo De Morgana N, stąd następujące zasady: logiczne
wartość N jest lub(N) i biorąc pod uwagę zanegowany selektor s, jego wartość logiczna to AND[s] I
wreszcie wartość logiczna R czy to jest D ROLNICZE N, zgodnie z konwencją mającą wartość logiczną
wartość pustego zbioru be prawdziwy.

Dla tych, którzy nie znają prawa De Morgana, oto ono: biorąc pod uwagę dwa logiczne twierdzenia p
oraz q, wówczas zachodzą następujące tożsamości:

NIE (p ORAZ q) <=> (NIE p) LUB (NIE q)
NIE (p LUB q) <=> (NIE p) ORAZ (NIE q)

Skoro jesteśmy przy logice twierdzeń, zauważmy również, że OR i AND są wzajemnie powiązane
dystrybutywny, to znaczy, biorąc pod uwagę trzy logiczne twierdzenia p, q oraz r, mamy:

p AND (q OR r) <=> (p AND q) OR (p AND r)
p OR (q ORAZ r) <=> (p OR q) ORAZ (p OR r)

Aby było kompletne, OR i AND są ze sobą łączne i przemienne. I B zestaw
{ 0, 1 } wyposażony w zbiór operacji (NOT, OR, AND) to an algebra (logiczny).
Oszczędzę Wam definicji algebry, która tak naprawdę nie ma tu nic do rzeczy
strona podręcznika (która jest dla agenta pocztowego, jeśli nie pamiętasz :-).

Uważny czytelnik z pewnością zauważy, że nie określiłem wartości logicznej
selektora grupy. Cóż, biorąc pod uwagę selektor grupy G, rozkładamy to na a DG oraz NG
przegroda, DG będący podzbiorem (atomowych) bezpośrednich selektorów G oraz NG będący podzbiorem
(atomowych) zanegowanych selektorów. Następnie wartość logiczna DG jest lub(DG) i logiczne
wartość NG jest i(NG); globalna wartość logiczna G będąc tym z DG OR NG. W razie
przez DG or NG jest pusty, to nie mamy partycji, ale zgodnie z konwencją wartość
pusty zbiór jest fałszywy, a jeden ze zbiorów jest równy G. Pamiętaj, że w grupie
selektora, reguły są dokładnie dualnością reguł znajdujących się w obrębie selektora R.

Teraz jedyna zasada, która nie jest logiczny dotyczy tego, czy selektor grupy należy do D or N. ja mam
wybrany, ze względów analogii, do którego należy selektor grupy D jeśli się nie uruchomi
przez '!' i do N W przeciwnym razie. Oznacza to, że !To Cc: należy do N podczas gdy Cc !To: należy do D.
Poza tym kolejność w selektorze grupy nie ma znaczenia: To Cc: jest równoważne Cc
To:, więc zachowanie w zestawie ilorazów jest prawidłowe.

Oto kilka przykładów:

# Dopasuj wszystko: (nie z pamięci RAM LUB nie z katalogu głównego) jest zawsze prawdą.
Od: !ram, !root

# Dopasuj wszystko, ale odrzucaj wiadomości pochodzące z pamięci RAM LUB roota
!Od: baran, korzeń

# Odrzucaj maile, których nagłówki pasują do /^Re.*/ i zawierają słowo test
!^Re.*: /\btest\b/

# Przechowuj wiadomości e-mail, których temat zawiera test ROLNICZE gospodarz
!Temat: !/test/, !/host/

# Pasuje jeśli baran jest wymieniony w Do Albo Cc linia
Do Cc: baran

minimalny Nagłówek
Gwarantowany jest ustawiony minimalny zestaw selektorów, niezależnie od rzeczywistego nagłówka
wiadomość. Ma to wyłącznie na celu filtrowanie, a nie fizyczne zmiany
wykonane.

Koperta: Jest to adres znajdujący się w kopercie pocztowej, czyli adres, na który trafia poczta
zdaje się pochodzić z. To może się różnić od Od: pole adresowe jeśli
poczta pochodzi od a zaufany użytkownik, w terminologii sendmaila. Jeśli tego nie zrobisz
wiesz co to jest, po prostu to zignoruj.
Od: Użytkownik, który napisał wiadomość. Jeśli brakuje tej linii, używany jest adres znaleziony w pliku
pierwszy Z linii.
Długość: Fizyczna długość treści w bajtach po zakodowaniu przesyłania treści (jeśli
jakikolwiek) został usunięty.
Kwestia: Ilość linii w ciele (w razie potrzeby zdekodowana).
Do: Główni odbiorcy wiadomości. Jeśli brakuje tej linii, ale zestawu
Najwyraźniej-Do: linie zostaną znalezione, wówczas zamiast tego zostaną użyte te adresy. Jeśli nie ma takiego
line istnieje, załóżmy, że poczta została skierowana do użytkownika (co wydaje się być
rozsądne założenie :-).
Nadawca: Użytkownik, który wysłał wiadomość. Może się to różnić od Od: linia. Jeśli nie ma takiego pola
istnieje, wówczas używany jest adres z pierwszej linii From (koperta pocztowa).
Przekazywane: Ten obliczony nagłówek jest rozdzieloną przecinkami listą wszystkich hostów, na których znajduje się plik
wiadomość została przekazana we właściwej kolejności transmisji. Każdy element tej listy
może być nazwą maszyny, np poczta.hp.com lub adres IP, np
[15.125.38.12]. Lista pochodzi z Odebrane: linie obecne w
wiadomość.
Odpowiedzieć do: Gdzie należy wysłać jakąkolwiek odpowiedź. Jeśli nie Odpowiedzieć do: pole jest obecne, to
Ścieżka powrotna jest używany (z usuniętym <>) lub Od: linia jest analizowana
wyodrębnij adres e-mail autora.

Zmienne
Agent pocztowy obsługuje zmienne definiowane przez użytkownika, które mają charakter globalny. Są one ustawiane poprzez
Polecenie ASSIGN i do którego odnosi się makro %#. Zakładając, że ustawimy zmienną gospodarz, następnie
%#gospodarz zostanie zastąpiony rzeczywistą wartością zmiennej. Umożliwia to pewną zmienną
propagacja poprzez zasady.

Załóżmy na przykład, że użytkownik otrzymuje dane wyjściowe cron z różnych komputerów i chce to zrobić
zapisuj je dla poszczególnych maszyn, rozróżniając wyniki dzienne i tygodniowe.
Oto rozwiązanie:

Temat: /wyjście dla hosta (\w+)/ { PRZYPISZ hosta '%1'; ODRZUCIĆ };
Temat: /^Dzienne wyjście/ { ZAPISZ %#host/daily.%D };
Temat: /^Tygodniowe dane wyjściowe/ { ZAPISZ %#host/weekly.%m-%d };

Oprócz interpolacji zmiennych poprzez ucieczkę % #, możliwe jest również wykonanie
podstawienia i tłumaczenia zawartości zmiennej (lub odniesienia wstecznego, tj
liczba od 1 do 99). Obydwa polecenia SUBST i TR wykonają się odpowiednio lokalnie
substytucje i tłumaczenia. W takim przypadku jednak nazwa zmiennej musi brzmieć
poprzedzone pojedynczym #. To odróżnia odniesienie wsteczne 1 od zmiennej #1,
chociaż 1 to zabawna nazwa zmiennej. Potrzeba # zapobiega również powszechnemu błędowi
napisania %#, ponieważ agent pocztowy będzie głośno narzekał, jeśli pierwszym parametrem SUBST lub TR będzie
nie jest cyfrą z zakresu od 1 do 99 lub nie zaczyna się od #.

Oto kilka działań mających na celu kanonizację nazwy hosta na małe litery i usunięcie
nazwa domeny, jeśli istnieje:

{ TR #host /AZ/az/; PODST #host /^([^.]*)\..*/$1/ };

Działania te przekładają się bezpośrednio na ich Perl równoważne i wszelkie błędy w pliku
zostanie zgłoszona specyfikacja wyrażenia regularnego.

Jeśli nazwa zmiennej zaczyna się od dwukropka „:”, wówczas zmienna staje się trwała. To
oznacza to, że zachowa swoją wartość podczas różnych wywołań agentów pocztowych. Zmienna jest
po prostu przechowywany (z usuniętym wiodącym „:”) w bazie danych agenta pocztowego i dlatego podlega
z polityką dotyczącą starzenia się określoną w art ~/.mailagent.

W obrębie poleceń PERL lub haków pocztowych przy użyciu Perla (zobacz sekcję HOOKI MAILOWE) możesz
manipulować tymi (tak zwanymi) zmiennymi zewnętrznymi za pomocą zestawu zlokalizowanych funkcji interfejsu
zewnętrzny pakiet (tzn. musisz poprzedzić każdą nazwę funkcji jej pakietem
imię, zestaw staje zestaw zewnętrzny). Dostępne są następujące trzy funkcje interfejsu:

val(nazwa) Zwraca wartość zmiennej Nazwa (początkowe „:” nie jest częścią nazwy,
w dowolnej z tych trzech funkcji interfejsu).

zestaw(nazwa, wartość)
Ustaw zmienną zewnętrzną Nazwa trzymać wartość. Żadna interpretacja nie jest dokonywana przez
działają na rzeczywistej zawartości pliku wartość podajesz.

wiek(nazwa) Zwraca wiek zmiennej, tj. czas w sekundach, jaki upłynął od ostatniej zmiennej
modyfikacja dokonana przez zestaw.

Obecnie nie ma możliwości usunięcia zmiennej z bazy danych. Ale jeśli nie używasz
zmienna będzie już więcej, zostanie usunięta, gdy jej wiek będzie większy niż maksymalny
wiek określony przez wiek maks zmienna konfiguracyjna.

Regularna Expressions
Wszystkie wyrażenia regularne są zgodne ze składnią V8, jak w Perl, ze wszystkimi Perl
rozszerzenia. Jeśli w regule użyta zostanie konstrukcja nawiasu (...), wówczas %cyfra makro
pasuje do cyfrapodłańcuch '' umieszczony w nawiasie. Wszystkie te odniesienia wsteczne są
zapamiętywane według reguł, numerowane od lewej do prawej. Należy jednak zachować dużą ostrożność
podejmowane podczas używania odwołania wstecznego w mnożeniu obecnych selektorów, tak jak będzie to miało miejsce w przypadku wszystkich dopasowań
być wykonywane aż do pierwszego dopasowania, a odniesienia wsteczne są obliczane na bieżąco
dopasowywanie wzorców.

Na przykład:

Do: /(.*)/, Temat: /Wyjście z (\w+)/ { PRZYPISZ do '%1'; ZAPISZ %2 };

zapisze pole Do: w zmiennej „do” i zapisze pocztę w folderze pochodzącym z
nazwa hosta podana w temacie. Jeśli jednak powiemy:

Temat: /host (\w+)/, /from (\w+)/ { PRZYPISZ dopasowanie '%1' };

wówczas będzie tylko jeden zestaw odniesień wstecznych i będzie on pochodził z pierwszego wzorca
dopasowanie, jeśli się powiedzie, lub od drugiego. Czy drugi czy pierwszy wzór powinien mieć
brak konstrukcji w nawiasach i nadal pasuje, wówczas odniesienie wsteczne nie zostanie zarejestrowane
all, co oznacza, że ​​prawdopodobnie nie jest to, czego chcesz:

Temat: /z/, /host (\w+)/, Do: /(.*)/ { ZAPISZ %1; ODRZUCIĆ };

tak jakby wzorzec /from/ pasował, wtedy /host (\w+)/ nie będzie sprawdzany (identycznie
selektory są or'ed i jest zoptymalizowany), wówczas %1 będzie odnosić się do pola Do:, podczas gdy
jeśli /host (\w+)/ pasuje, %1 będzie nazwą hosta.

Jednak tego zachowania można użyć do selektywnego przechowywania artykułu prasowego, który został już opublikowany
wysłane do Ciebie w folderze, którego nazwa jest nazwą grupy dyskusyjnej wyrażoną w formie kropki. Zakładając, że chcemy
aby nadać priorytet comp.lang.perl, moglibyśmy powiedzieć:

Grupy dyskusyjne:
/(comp.lang.perl)/,
/(komp.poczta.mh)/,
/(kompilatory kompilatorów)/,
/([^,]*)/ { ZAPISZ %1 };

Artykuł przesłany do comp.lang.perl i comp.mail.mh zostanie zapisany w formacie
comp.lang.perl, ponieważ to właśnie ten plik będzie pasował jako pierwszy. Ostatnie zasady są przestrzegane
inne artykuły: używanym folderem jest grupa dyskusyjna, która pojawia się jako pierwsza.

Istnieje także specjalne makro %&, które wyświetla (jest to lista oddzielona przecinkami) wszystkie
selektory określone za pomocą wyrażenia regularnego, które rzeczywiście pasują. Na przykład:

Dot.*: /york/ { PRZYPISZ który '%&' };

przypisałby który lista wszystkich pól pasujących do wzorca /Re.*/ który
zawierało słowo „york”, niezależnie od tego, czy było to pole Odebrane: czy pole Przesłane od: (ponieważ oba pasują do
specyfikacja selektora). Zakładając, że oba te pola zawierały słowo york, wartość
%& będzie brzmiało: „Otrzymano, ponownie wysłano od;” (pola są sortowane alfabetycznie).

Jeśli w jednej regule masz więcej niż jeden taki określony selektor, może tak być
warto wiedzieć, że cały zestaw pasujących selektorów jest rejestrowany w %&, każdy zestaw
zakończone znakiem „;”. Jeśli zostanie użyty zanegowany selektor, %& zarejestruje wszystkie pola
który nie zawierał wzorca, zakładając, że selekcja się powiodła (w przeciwnym razie nic się nie stanie
nagrany).

Dostępny Akcje
Jako polecenia filtrujące dostępne są następujące akcje. Sprawa nie ma znaczenia, chociaż
zalecanym stylem jest pisanie ich wielkimi literami. Jak wyjaśniono później, większość działań
zapisują swój status wyjścia w specjalnej zmiennej, którą można przetestować za pomocą narzędzia -t oraz -f
opcje ABORT, REJECT i RESTART. Dla każdego polecenia zwracającego taki status wyjścia,
Warunki niepowodzenia lub sukcesu podano na końcu każdego opisu. Jeśli nic nie jest
określony, polecenie nie zwróci znaczącego statusu.

ANULOWAĆ [-tf] [tryb]
Natychmiast przerwij stosowanie reguł filtrowania. Zobacz ODRZUĆ, aby zapoznać się ze znaczeniem
parametry opcjonalne. (Nie modyfikuje istniejącego statusu)

PO [-sanc] (czas) akcja
Rejestruje wywołanie zwrotne po określonym czas, Gdzie akcja będzie wystawiany.
Domyślnie zakładana jest akcja filtrowania poczty przez agenta pocztowego (-a opcja), na prądzie
wiadomość e-mail. Polecenie powłoki (-c) można zamiast tego podać, otrzymując prąd
wiadomość e-mail jako standardowe wejście. Na koniec można uruchomić zwykłe polecenie powłoki (z
brak danych wejściowych) za pomocą -s opcja. Opcja -n może być używany, gdy bieżąca poczta
wiadomość nie musi być przechowywana do wprowadzenia. Na przykład:

PO -na (1 dzień) ZRÓB ~/proces:proc'run(%u)

zadzwoniłby proc'run zdefiniowane w ~/proces plik za jeden dzień od teraz, bez
podając jakiekolwiek dane wejściowe (akcja tutaj nie wymaga żadnych).

Podczas uruchamiania poleceń mailagenta początkowy tryb pracy jest ustawiony na _CALLOUT_.
Może to mieć znaczenie, jeśli na przykład wywołasz APPLY. Jeśli zarejestrowany czas jest krótszy lub
równy aktualnemu czasowi (tzn już dziś), wywołanie zwrotne nastąpi, gdy
mailagent kończy pracę z wiadomościami w swojej kolejce przed wyjściem. To pozwala
za następującą słodką sztuczkę, odkrytą przez Randala Schwartza:

PO (teraz) # rozwidleniu kopii mogę manipulować
Odpowiedź STRIP na \; RESYNCHRONIZACJA \;
ANNOTATE -du Odpowiedź na %2 \; RESYNCHRONIZACJA \;
POWIADOMIĆ wiadomość %r \; USUWAĆ \;
;

Należy pamiętać, że polecenie nie jest wywoływane AT ponieważ połączenie zostanie tylko wykonane
przy następnym wywołaniu agenta pocztowego po upływie określonego czasu. Daty są
określone przy użyciu tego samego formatu, co w SELECT. (Niepowodzenie, jeśli akcja nie może zostać wykonana
zapisane w kolejce wywołań).

ADNOTACJA [-z] pole wartość
Dodaj adnotację do wiadomości pole do nagłówka poczty za pomocą dostarczonego pliku wartość.
To jest jak polecenie MH anno, ale adnotacja jest wykonywana na końcu
nagłówka, podczas gdy MH robi to na górze. Normalnie, ekstra pole jest dodany,
z bieżącą datą jako wartością pola.

Można to stłumić za pomocą -d opcja. Gdyby wartość jest pominięty, tylko
generowane jest pole daty (stąd błędem jest użycie pola -d opcja bez
dostarczanie wartość). Podobnie jak w przypadku wszystkich poleceń zmieniających nagłówek, jest to polecenie RESYNC
konieczne, aby część filtrująca faktycznie zobaczyła nowy nagłówek.

-u opcja oznacza „unikalny” i uniemożliwia wykonanie ANNOTATE, jeśli
określony pole jest już obecny w nagłówku. Nie zapomnij o RESYNC pomiędzy
kolejne polecenia ANNOTATE przy użyciu tej opcji, jeśli pole odnosi się do poprzedniego
OPISZ cel. (Niepowodzenie, jeśli nie ma adnotacji)

ZASTOSOWANIA plik reguł
Trzymaj się zasad plik reguł i zastosuj je do bieżącej wiadomości. The
filtr rozpocznie się w dowolnym trybie, w którym korzystałeś z tego polecenia, ale bez kanału
nastąpi powrót, tj. w przypadku powrotu z trybu, jakakolwiek zmiana trybu zostanie utracona
dowództwo.

Zmienne (patrz makro %#) są propagowane tam i z powrotem poprzez APPLY,
co oznacza, że ​​widzisz zmienne ustawione przez osobę wywołującą i możesz zmienić ich wartości lub
utwórz nowe zmienne, których osoba wywołująca będzie mogła użyć później.

Jeśli poczta zostanie zapisana podczas stosowania zasad, wówczas odpowiednia
flaga jest ustawiona w głównym filtrze (tym, który uruchomił polecenie ZASTOSUJ). Możesz
oczywiście je zagnieździć. (Nie powiedzie się, jeśli poczta nie zostanie zapisana zgodnie z obowiązującymi regułami
plik reguł)

ASSIGN było wartość
Przypisz wartość do zmiennej zdefiniowanej przez użytkownika było, do których można uzyskać dalszy dostęp
as '%#var' do podstawienia makro lub #var w poleceniach TR i SUBST
nazwy zmiennej. Należy pamiętać, że nie ma wiodącego # przed zmienną
Nazwa. Plik wartość które podałeś, jest najpierw uruchamiane Perl aby zobaczyć, czy zawiera trochę
działania arytmetyczne. Jeśli ocena zakończy się pomyślnie, otrzymana wartość będzie taka
używane zamiast tego. Jeśli w procesie oceny wystąpi błąd, wówczas literał
podana wartość jest używana. Aby uniknąć oceny można załączyć całość
wartość w prostych cudzysłowach. Zostaną one przycięte przed wykonaniem zadania.
Jeśli rzeczywiście chcesz mieć proste cudzysłowy na pierwszej ORAZ ostatniej pozycji, musisz to zrobić
podwoić każdy z nich. (Nie modyfikuje istniejącego statusu)

Z POWROTEM komenda
Wykonać komenda i potraktuj jego dane wyjściowe jako nowe działania do wykonania na poczcie
(stąd wykonanie czegoś analogicznego do `polecenie` w skorupkach). Jeżeli nie ma
wyjście, nic się nie dzieje. Polecenia BACK można zagnieżdżać, choć może to prowadzić do:
niespodzianek, których ta strona podręcznika nie ujawni (ale zapewniam, że będzie zabawnie,
zakładając, że mamy to samo poczucie humoru... :-). Należy pamiętać, że zarówno standardowe
używane są dane wyjściowe i błąd standardowy z polecenia.

Jeśli polecenie nie powiedzie się, dane wyjściowe zostaną odesłane do użytkownika i nie zostaną podjęte żadne działania
wykonane. Co więcej, nie występuje tutaj normalne sprzężenie zwrotne: jakiekolwiek wyjście z
polecenie jest traktowane jako akcja filtrująca, co oznacza semantykę PASS, dla
przykład, ulega zmianie: nie przyjmujemy ciała, ale rozkazy. (Egzekucja
stan jest taki, jak komenda)

Sygnał dźwiękowy [-l] liczyć
Polecenie to może być użyte do dostrojenia ilości sygnałów dźwiękowych emitowanych podczas biffowania
terminal, dla każdego %a ekspansja. Domyślnie kwota ta jest ustawiona na 1. Korzystanie z
-l Opcja zmienia lokalnie liczbę sygnałów dźwiękowych dla reguły. W przeciwnym razie wartość domyślna
kwota ulega zmianie.

Zauważ, że to po prostu rozwija %a do odpowiedniej liczby znaków Ctrl-G.
Aby to zadziałało, Twój terminal musi mieć możliwość emitowania kolejnych sygnałów dźwiękowych. Bardzo
często terminale są skonfigurowane w taki sposób, że pierwszy otrzymany dzwonek dalej się wyłącza
przez jakiś czas wydaje sygnał dźwiękowy, aby uniknąć kaskad dzwonków. Jeśli użyjesz xterm dla
na przykład powinieneś użyć:

xterm -xrm "XTerm*BellSuppressTime: 0"

aby włączyć kolejne dzwonki. W przeciwnym razie, xterm połknie je w ciągu 200 ms,
co najwyraźniej sprawia, że ​​polecenie BEEP jest nieskuteczne. (Nie modyfikuje
istniejący stan)

ZACZYNAĆ [-ft] były
Wejdź w nowy stan. Aby przerwać operację, konieczne jest wyraźne REJECT lub RESTART
przetwarzanie bieżącej reguły. Przetwarzanie rozpoczyna się w stanie INITIAL. Jeśli
dotychczasowy -f (odp. -t) zostanie podana flaga, wówczas zmiana stanu nastąpi tylko wtedy, gdy
ostatni status polecenia wskazywał na niepowodzenie (lub sukces). Nazwa stanu może
zawierać znaki alfanumeryczne i podkreślenia. (Nie modyfikuje istniejących
status)

BIFF [-l] na | poza | ścieżką
Zezwalaj lub nie zezwalaj na dynamiczne biffowanie. Gdy biffing jest włączony poprzez
konfiguracyjnego lub poprzez to polecenie, na niektórych plikach zostanie wydrukowany komunikat
terminale, na których użytkownik jest zalogowany po odebraniu poczty, jak wyjaśniono w punkcie
Sekcja MAIL PRZEBIEGANIE.

Zamiast on or poza, możesz określić nazwę pliku (~dozwolone podstawienie).
nowa ścieżka, która będzie używana dla szablonu formatu biffingowego.

Jeśli używasz -l opcji, zmiany wprowadzane są lokalnie, przez czas obowiązywania reguły
tylko. Jeśli ODMÓWISZ przejścia na inną regułę, Twoje zmiany zostaną utracone. The
globalna wartość zmienionych parametrów ulega zmianie przy pierwszym lokalnym użyciu i
przywrócone po wprowadzeniu nowej reguły. (Nie zmienia statusu wykonania)

ODBIĆ SIĘ adres(y)
Odbija wiadomość na określone adresy i działa tak, jakby miało miejsce zapisanie
zrobione. Jedyna różnica w FORWARD polega na tym, że nie są dodawane żadne linie podobne do Resent
Nagłówek. Jeśli adres jest podany w cudzysłowie, jest on traktowany jako nazwa
pliku, który ma zostać załadowany w celu uzyskania adresów (jeden adres w linii, komentarze powłoki
(#) dozwolony). Rozwiązywanie nazw plików jest takie samo, jak w przypadku wzorca
Ładowanie. (Niepowodzenie, jeśli nie można ponownie wysłać poczty)

DO rutyna [(argument1, argument2, ... , arg)]
Wywołuje perl rutyna, z dostarczonymi argumentami, jeśli takie istnieją. To bardzo niski wynik
zaczep na poziomie listonosza wewnętrzny. Procedurę można określić samodzielnie
(nazwa pakietu, pakiet który jest główny domyślnie) lub identyfikowane przez wiodący etykieta,
po którym następuje „:”, a następnie nazwa procedury, jak poprzednio. The etykieta może być ścieżką do a
plik, w którym zdefiniowano procedurę, lub nazwę polecenia (w przypadku poleceń zdefiniowanych przez użytkownika
które są ładowane dynamicznie). Na przykład

ZRÓB UNKIT:newcmd'unkit('true')

wyszuka plik zdefiniowany przez użytkownika ROZŁĄCZONY polecenie, załaduj plik tam, gdzie jest zdefiniowany
(w nowy cmd pakiet), a następnie wywołaj procedurę za pomocą 'prawda' jako argument. The
pakiet Określone określa, gdzie odbywa się ładowanie, więc upewnij się, że tak jest
zgodne z definicją w pliku, w którym zdefiniowano procedurę. (Nie udaje się
jeśli nie można zlokalizować i wykonać procedury)

USUŃ Usuń bieżącą wiadomość. Właściwie to nic nie daje, po prostu zaznacza
poczta jako zapisana. Jeśli nie zostanie wykonana żadna dalsza akcja polegająca na zapisaniu, zostanie wysłana wiadomość
nigdy nie pojawi się w skrzynce pocztowej. (Nigdy nie zawodzi)

KARMIĆ [-być] program
Podaj całą wiadomość do programu i uzyskaj wynik z powrotem jako nową wiadomość.
Stąd program pojawia się jako filtr dla całej wiadomości. Nie taguje
wiadomość jako zapisaną. Po powrocie następuje automatycznie RESYNC.
(Zwraca stan program)

UWAGA: Twój program musi być w stanie poprawnie przeanalizować wiadomość MIME i musi
radzi sobie samodzielnie z ciałami zakodowanymi w trybie transferu. Aby uprościć zadanie programu,
możesz dostarczyć -b przełącznik, który pozwoli listonoszowi zdekodować całą treść
ty, pomijając dowolny nagłówek Content-Transfer-Encoding (co oznacza „binarny”). Ten
jest nieprawidłowym formatem wiadomości do wysłania wiadomości, ale powoduje to przetwarzanie
łatwiej. Nadal jednak musisz samodzielnie przeanalizować części MIME.

Korzystanie z -b nie uniemożliwia programowi wygenerowania prawidłowego komunikatu, jednego
które można ewentualnie przesłać przez sieć, więc masz dwie możliwości: albo to zrobisz
nie podawaj w nagłówkach żadnego kodowania przesyłania treści, a agent pocztowy to zrobi
przekoduj dla siebie treść, używając początkowego kodowania transferu obecnego w pliku
wiadomość (stosunkowo bezpieczna opcja, jeśli wprowadzasz tylko zmiany w ciele w dobrym stanie)
zdefiniowanych miejsc bez wprowadzania znaków 8-bitowych) lub możesz podać Content-
Przenieś-kodowanie samodzielnie i wykonaj kodowanie treści ręcznie.

Aby być całkowicie bezpiecznym i zminimalizować pracę w programie, plik -e przełącznik będzie
pozwól agentowi pocztowemu przeanalizować treść zwracanej wiadomości i wybrać właściwą
automatycznie przesyłać kodowanie. Ponieważ spowoduje to, że całe ciało będzie
przeanalizowane, a może być potencjalnie ogromne, takie zachowanie musi zostać wyraźnie określone
spytany o. Jeśli potrzebujesz -e więc prawdopodobnie chcesz -b również (możesz dostarczyć oba
mówiąc -być naturalnie).

Jeśli nie podasz żadnego przełącznika, agent pocztowy przekaże Ci wiadomość w takiej postaci, w jakiej jest
otrzyma Twoją wiadomość taką, jaka jest, bez żadnej dodatkowej magii.

NAPRZÓD adres(y)
Przesyłaj dalej pocztę na podane adresy. Działa to tak, jakby dokonano zapisu,
aby uniknąć DELETE. Zwykle, gdy przekazujesz dalej pocztę, nie chcesz
żeby to zachować. Polecenie dodaje do nagłówka linie podobne do Resent. Jeśli chodzi o BUNCE,
możliwe jest dołączenie pliku (tj. użyj adresu „lista_do przodu” aby przekazać pocztę
wszystkim użytkownikom wymienionym w pliku lista_do przodu). (Nie powiedzie się, jeśli poczta nie może być
Wysłany ponownie)

DAĆ program
Przekaż treść wiadomości określonemu programowi, podając jego standard
wejście. Wszelkie dane wyjściowe są wysyłane pocztą do użytkownika, który uruchamia plik agent pocztowy. Zauważ, że
wiadomość nie jest oznaczona jako zapisana. (Zwraca stan program)

UWAGA: Jeśli wiadomość miała treść zakodowaną do transportu (przy użyciu jednego z
base64 lub kodowanie transferu do wydruku), agent pocztowy będzie przezroczysty
rozszyfrować go i dostarczyć wersję, którą można odpowiednio obsłużyć. Innymi słowy,
program nie musi martwić się o treść zakodowaną w wiadomości,
jak dostanie zwykły. (Ponieważ nie podano żadnych nagłówków, jest to jedyny
możliwa opcja).

Uważaj jednak na wiadomości MIME: powinieneś użyć PIPE, aby dać im szansę
do programu, aby poprawnie obsługiwał ciało, ale wtedy musi to być w pełni MIME-
świadomy.

TRZYMAĆ lista_pól_nagłówkowych
Zachowuje tylko odpowiednie linie w nagłówku wiadomości. Na przykład:
Opcja „ZACHOWAJ Temat od do DW” spowoduje zachowanie tylko głównych pól wiadomości
wiadomość. Jest to odpowiednie do archiwizowania wiadomości z list mailingowych. Możesz dodać
„:” po nazwie każdego pola nagłówka, jeśli chcesz, ale nie jest to ściśle przestrzegane
niezbędny. Nagłówki można określić za pomocą wyrażeń regularnych w stylu powłoki oraz
dołączenie pliku umożliwia pobranie nagłówków z pliku. (Nie modyfikuje istniejących
status)

WYJDŹ Pozostaw pocztę przychodzącą w systemowej skrzynce pocztowej. Jest to akcja domyślna w przypadku braku reguły
dopasowane lub jeśli nie nastąpiło żadne zapisanie. Nie jest to zalecane w systemach Debian.
(Niepowodzenie, jeśli nie można zapisać poczty)

MAKRO [-rdp] Nazwa [= (wartość, rodzaj)]
Umożliwia określenie makr zdefiniowanych przez użytkownika w postaci %-(Nazwa). Zobacz akapit dot
makra definiowane przez użytkownika w celu wyjaśnienia dostępnych typów (SCALAR, EXPR,
CONST, FN, PROG, PROGC). Interfejs Perla do podstawowych makr użytkownika to:
dostępne dla poleceń Perla. The -r opcja jest używana do zastąpienia istniejącej
makro (zamiast wypychania nowej instancji na stos), plik -d jest usunięcie wszystkiego
instancje nazwanego makra (w tym przypadku pobierany jest tylko pierwszy argument),
oraz -p usuwa ostatnią instancję makra ze stosu i powraca do
poprzednia definicja, jeśli istnieje (w przeciwnym razie działa jak -d). Jeśli chcesz zdefiniować a
proste makro SCALAR, możesz pominąć = (wartość, typ) część i po prostu kontynuuj
z wartością makro. (Nie modyfikuje istniejącego statusu)

MESSAGE filet
Wyślij wiadomość filet z powrotem do nadawcy wiadomości (jak wynika z nagłówka
wiadomości). Tekst komunikatu jest przepuszczany poprzez podstawienie makra
mechanizm (opisany później). (Niepowodzenie, jeśli nie można wysłać wiadomości)

NIE [-ft] Bez operacji. Jeśli wydaje się to nieco dziwne, pomyśl o tym w kategoriach polecenia RAZ.
(Nie zmienia istniejącego statusu, chyba że -f or -t jest używany i w takim przypadku wymusza
a fałszywy --awaria-- lub prawdziwy status sukcesu)

ZGŁOSZENIA filet adres(y)
Wyślij wiadomość z powiadomieniem filet do podanej listy adresowej. Tekst ww
wiadomość jest uruchamiana poprzez mechanizm podstawienia makr (opisany w dalszej części).
Podobnie jak w przypadku FORWARD, możliwe jest dołączenie pliku w celu określenia adresu. (Nie udaje się
jeśli wiadomość nie może zostać wysłana)

ON (dzień lista) komenda
Wykonaj określone polecenie filtrowania tylko na określonej liście dni. Ta lista
to lista dni oddzielonych spacjami, określona przy użyciu nazw angielskich. Tylko
brane są pod uwagę pierwsze trzy znaki, bez rozróżniania wielkości liter. Dlatego,
są najkrótsze obowiązujące specyfikacje dnia Pon, wt, Poślubić, Cz, pt., Sob oraz Niedz.

Tego polecenia można używać w połączeniu z poleceniem SELECT, aby wykonać selektywność na podstawie czasu
odsyłanie wiadomości np. na Twój adres domowy:

ON (pon. wt. śr. czw.) WYBIERZ (18:30 .. 23:00) BUNCE [email chroniony];
ON (piątek) WYBIERZ (18:30 .. 23:59) ODBIJ [email chroniony];
ON (sobota niedziela) BOUNCE [email chroniony];

Spowodowałoby to odsyłanie wiadomości tylko w weekendy i w tygodniu, po godzinie 18:30,
i do 23:00 (zakładając, że jest to pora snu, pozostałe wiadomości będą widoczne w pracy
Następnego dnia). Należy pamiętać, że w piątki dojeżdżamy aż do 23:59. (Propaguje status
od komenda. Jeśli polecenie nie zostanie wykonane, zawsze zwróć sukces)

PEWNEGO RAZU (nazwa, dzień, Kropka) komenda
Wykonaj określone polecenie filtru raz na okres, Nazwa oraz etykieta Pola
służą do rejestrowania znaczników czasu ostatniego polecenia ONCE. Więcej na ten temat później.
(Propaguje status z komenda. Jeśli polecenie nie zostanie wykonane, zawsze wróć
powodzenie)

PASS program
Podaj treść wiadomości określonemu programowi i uzyskaj z powrotem nową treść
z wyniku programu. Pamiętaj, że wiadomość nie jest oznaczona jako posiadająca
został ocalony. (Zwraca stan program)

UWAGA: Jeśli wiadomość miała treść zakodowaną do transportu (przy użyciu jednego z
base64 lub kodowanie transferu do wydruku), agent pocztowy będzie przezroczysty
rozszyfrować go i dostarczyć wersję, którą można odpowiednio obsłużyć. Wygenerowano ciało
przez program zostaną następnie automatycznie zakodowane z powrotem przy użyciu tego samego transferu
kodowanie.

Uważaj jednak na wiadomości MIME: powinieneś użyć FEED, aby dać im szansę
do programu, aby poprawnie obsługiwał ciało, ale wtedy musi to być w pełni MIME-
świadomy.

Perła scenariusz [argumenty]
Ucieczka do perla scenariusz aby wykonać pewne działania na wiadomości. To jest w pełni
opisane w dalszej części podręcznika i bardzo różni się od pliku BIEGAĆ Perl scenariusz
Komenda. (Zwraca błąd, jeśli skrypt nie został skompilowany lub zwrócił wartość różną od zera
status).

RURA [-b] program
Prześlij całą wiadomość do określonego programu, ale nic nie otrzymasz w zamian.
Wszelkie dane wyjściowe są wysyłane pocztą do użytkownika, który uruchamia plik agent pocztowy. Wiadomość nie
w każdym przypadku oznaczony jako zapisany, więc musisz go wyraźnie USUNĄĆ if
orurowanie wystarczyło i nie zawiodło: „REJECT -f” jest Twoim przyjacielem, którego należy tutaj unikać
niechciane usunięcie. (Zwraca stan program)

UWAGA: Twój program musi być w stanie poprawnie przeanalizować wiadomość MIME i musi
radzi sobie samodzielnie z ciałami zakodowanymi w trybie transferu. Aby uprościć zadanie programu,
możesz dostarczyć -b przełącznik, który pozwoli listonoszowi zdekodować całą treść
ty, pomijając dowolny nagłówek Content-Transfer-Encoding (co oznacza „binarny”). Ten
jest nieprawidłowym formatem wiadomości do wysłania wiadomości, ale powoduje to przetwarzanie
łatwiej. Nadal jednak musisz samodzielnie przeanalizować części MIME.

POST [-funt] grupy dyskusyjne
Opublikuj wiadomość w określonych grupach dyskusyjnych po oczyszczeniu pliku
nagłówek: pola związane z pocztą, takie jak Otrzymano: lub W odpowiedzi na: zostały usunięte, prawidłowy
Generowana jest linia From:, oryginalne nazwy To: i Cc: są zmieniane z prefiksem X,
linia Referencje: jest aktualizowana/generowana, jeśli to konieczne, w oparciu o istniejące In-
Pola Reply-To i specyficzne dla protokołu NNTP są usuwane, aby serwer mógł je dodać
posiadać.

Uruchomienie testu POST pomyślnie działa jako oszczędność.

Jeśli ma na imię -l jak w „POST -l comp.mail.mh”, a następnie „Dystrybucja:
local”, aby wymusić dostawę lokalną. W przeciwnym razie wartość domyślna Inows
używana będzie dystrybucja (zwykle świat).

Podczas -b przełącznik zostanie podany, pomyślny test POST spowoduje biffing
aktywowany (patrz sekcja MAIL PRZEBIEGANIE) dla powstałego artykułu prasowego.

Jeśli określono więcej niż jedną grupę dyskusyjną, należy je oddzielić spacjami. To jest
możliwe jest uzyskanie listy grup dyskusyjnych poprzez dołączenie pliku. (Niepowodzenie, jeśli wiadomość nie może
zostać opublikowany)

PROCES Uruchamia przetwarzanie poczty, które szuka poleceń @SH i wykonuje je.
Zostało to opisane wcześniej w sekcji poświęconej regułom domyślnym. Akcja
domyślnie powiązany z wiadomością mającą polecenie [Cc] jako temat to PROCES.
(Zawsze zwraca sukces)

CHRONIĆ [-lu] tryb
Ustawia domyślny tryb ochrony, który powinien być ustawiony dla utworzonych folderów (lub
utworzone pliki podczas zapisywania w folderze lub katalogu MH). Domyślnie,
uprawnieniami zarządza polecenie UMASK, ale pozwala to na zastąpienie
domyślny. Określony tryb należy poprzedzić a 0 jak w 0644 dać
znane uprawnienia ósemkowe. W przeciwnym razie jest ona interpretowana jako liczba dziesiętna, tzw
strzec się!

-l Opcja może zostać użyta do lokalnego określenia trybu dla jednej reguły. W przeciwnym razie,
tryb ochrony jest ustawiony globalnie. The -u opcja rozbraja globalny (lub lokalny
w połączeniu z -l), powracając do domyślnego zachowania, w którym tylko
umask jest uwzględniany przez system.

Należy pamiętać, że podczas zapisywania w folderze MH pierwszeństwo ma polecenie CHROŃ
ponad Ochrona wiadomości pole z Twojego ~/.mh_profil plik. (Nie zmienia się
status wykonania)

OCZYŚCIĆ program
Wprowadź nagłówek do programu i uzyskaj z powrotem nowy nagłówek. RESYNC została wykonana
automatycznie po powrocie. Można to faktycznie wykorzystać do oczyszczenia nagłówka przez
usunięcie wszystkich obszernych treści dodanych przez wielu agentów transportu poczty (X-400
jak na przykład linie). Oczywiście nie oznacza to, że wiadomość zawiera
został ocalony. (Zwraca stan program)

Jeśli Twój program usunie nagłówek Content-Transfer-Encoding z wiadomości MIME,
mailagent prawidłowo przekształci wiadomość tak, aby miała niezakodowaną treść. Jeśli
zmienisz wartość nagłówka Content-Transfer-Encoding, agent pocztowy to zrobi
również poprawnie przekoduj dla siebie ciało. Jedynymi obsługiwanymi kodowaniami są base64
i cytowane do druku.

KOLEJKA Ponownie zakolejkuj pocztę. Pomyślne ustawienie w kolejce liczy się tak, jakby poczta została zapisana. Poczta
oczekujące w tej kolejce nie będą przetwarzane w ciągu następnych 30 minut. Zauważ to
chyba że listonosz będzie regularnie wzywany przez cron, poczta pozostanie w
w kolejce do czasu nadejścia kolejnej poczty. (Niepowodzenie, gdy nie można ustawić poczty w kolejce)

NAGRYWAĆ [-akr] [były] [(lista tagów)]
Zapisz wiadomość w historii i przejdzie w stan _SEEN_ jeśli wiadomość już była
tam obecny. Jeśli wiadomość jest nagrywana po raz pierwszy, przetwarzanie
trwa normalnie. W przeciwnym razie wykonywany jest REJECT. Takie zachowanie może być
nieco zmodyfikowany poprzez użycie niektórych opcji. Pełny opis znajdziesz w UNIQUE
opcji i argumentów. Naturalnie, gdy A były jest określone, że
zastępuje domyślny _SEEN_. Nazwa stanu może zawierać znaki alfanumeryczne
i podkreślenia.

Kiedy lista tagów (lista nazw oddzielonych przecinkami), komunikat jest następujący
tylko nagrane i sprawdzone ze wszystkimi tymi tagami, ale tylko z nimi. Nie określając
dowolna lista znaczników oznacza dowolne wystąpienie, niezależnie od tego, czy jest ono oznaczone, czy nie. Zobacz akapit
Korzystanie z Tagi in Rekord oraz Wyjątkowy po więcej informacji. (Zwraca stan niepowodzenia
jeśli poczta została już nagrana)

ODRZUCIĆ [-tf] [były]
Przerwij wykonywanie bieżącej akcji i kontynuuj dopasowywanie. Jeśli -t jest specyficzne,
odrzucenie nastąpi tylko wtedy, gdy poprzednia akcja została pomyślnie wykonana
(zwróć status true), while -f spowodowałoby odrzucenie tylko w przypadku awarii
wystąpił. Jeśli były jest określony, wchodzimy w ten stan przed odrzuceniem. ODRZUCIĆ
resetuje flagę dopasowania, co oznacza, że ​​jeśli nie nastąpi żadne dalsze dopasowanie, plik
zostanie zastosowana domyślna akcja. Nazwa stanu może zawierać znaki alfanumeryczne i
podkreśla. (Nie zmienia statusu wykonania)

WYMAGAĆ filet [pakiet]
Zachowuje się jak perl wymagać operator, ładując plik Perla do pamięci. Przez
domyślnie plik jest odczytywany w formacie nowy cmd pakiet, ale możesz określić cokolwiek
pakiet, do którego chcesz go załadować. To polecenie wykona ładowanie tylko raz
na (plik, pakiet) krotkę. W przeciwieństwie do swojego odpowiednika w Perlu, plik „wartość” nie jest
ważne, tzn. nie musi kończyć się instrukcją zwracającą wartość prawdziwą.
(Niepowodzenie, jeśli nie można załadować pliku)

URUCHOM PONOWNIE [-tf] [były]
Przerwij wykonywanie bieżącej akcji i zrestartuj proces dopasowywania od
początek. Aby uniknąć pętli, każdą regułę można przejść raz na daną regułę
państwo. Zobacz REJECT, aby zapoznać się ze znaczeniem parametrów opcjonalnych. RESTART resetuje
pasująca flaga, co oznacza, że ​​zostanie zastosowana domyślna akcja, nie powinna dalej
nastąpi dopasowanie. (Nie zmienia statusu wykonania)

RESYNC Ponownie zsynchronizuj nagłówek używany do dopasowania z nagłówkiem wiadomości e-mail. To jest
prawdopodobnie przydatne tylko wtedy, gdy uruchomiono polecenie SUBST lub ANNOTATE. (Nie zmienia się
status wykonania)

UWAGA: W czasie RESYNC agent pocztowy sprawdzi, czy plik Content-Transfer-Encoding
nagłówek został zmieniony i w razie potrzeby w przejrzysty sposób przekoduje treść, tak że
cała wiadomość pozostaje ważna pomimo zniekształcenia nagłówka. To też się zajmie
aktualizacji Content-Length, jeśli jest to wymagane. Za każdym razem, gdy zmieniasz te ważne
nagłówki poprzez SUBST lub ANNOTATE, pamiętaj o wywołaniu RESYNC przed pozbyciem się
w przeciwnym razie istnieje ryzyko zapisania uszkodzonej wersji, której nie będzie
właściwie zrozumiany przez agenta użytkownika poczty.

BIEGAĆ program
Uruchom określony program i wyślij e-mailem wszelkie dane wyjściowe do uruchomionego użytkownika agent pocztowy.
Ta czynność nie oznacza, że ​​wiadomość została zapisana. (Zwraca stan
of program)

RATOWAĆ falcówka
Zapisz wiadomość w określonym folderze. Jeśli nazwa folderu zaczyna się od „+”, to tak
obsługiwane jako folder w stylu MH i sklep rcv jest emulowany w celu dostarczenia wiadomości
do tego folderu. Jeśli folder jest katalogiem, wiadomość jest dostarczana w jednym pliku
plik w tym katalogu. Zobacz LORNETKA SKŁADANA Sekcja. (Niepowodzenie, jeśli wiadomość nie może
uratować się)

WYBIERAĆ (początek .. zakończenia) komenda
Wykonaj komenda tylko w określonym okresie wyboru czasu. Daty mogą
być określone w szerokiej gamie formatów. Dane wyjściowe dane(1) polecenie to
przykład prawidłowej specyfikacji. Jeżeli brakuje daty, roku lub miesiąca,
następnie zamiast niego zastępowany jest bieżący. Następujące daty są
ważne specyfikacje: „10:04:25”, „teraz”, „1 kwietnia 1992”, „25 grudnia”, „14 lipca
1789, 07:40' (err... jest to ważne zgodnie z gramatyką, ale jest przed
Epoka więc to nic nie znaczy). Inne fantazyjne daty, takie jak „ostatni miesiąc – 5”.
minuty” lub „3 tygodnie temu” są również włączone. (Czy to nie wspaniale mieć real
parser? Zasady filtrowania mogłyby być bardziej opracowane, gdybym tylko wiedział
o tym Berkeley Yacc produkujący Perl parser...). (Zwraca stan
komenda, jeśli zostanie uruchomiony, w przeciwnym razie zwraca wartość true).

SERWER [-t] [-d niepełnosprawny Polecenia]
Aktywuj przetwarzanie serwera. Treść wiadomości jest interpretowana jako lista
polecenia do wykonania. Patrz sekcja RODZAJOWY MAIL SERVER aby uzyskać więcej informacji na temat
sam serwer. The -t opcja zamienia serwer w zaufany tryb, Gdzie
uprawnienia można zyskać. The -d po opcji musi następować lista osób wyłączonych
polecenia, oddzielone przecinkami bez odstępów między nimi.

PODZIAŁ [-adeiw] falcówka
Podziel pocztę w formacie podsumowania do określonego folderu (te same konwencje nazewnictwa
jak w ZAPISZ). Jeśli nie określono żadnego folderu, każdy element podsumowania jest umieszczany w kolejce i tak zostanie
analizowana jako pojedyncza wiadomość e-mail. The -d opcja usuwa nagłówek podsumowania.
-i opcja oznacza, że ​​podział odbywa się na miejscu, a oryginalna poczta jest odrzucana.
Ze wszystkich opcji można korzystać jednocześnie, pod warunkiem, że są one sklejone
początek (analiza opcji jest naprawdę podstawowa).

Jeśli wiadomość nie jest w formacie podsumowania i określono folder, zostanie ona zapisana
w tym folderze. W przeciwnym razie akcja SPLIT zakończy się niepowodzeniem i nic się nie stanie (plik filter
kontynuuje jednak przetwarzanie). Polecenie SPLIT poprawnie rozdzieli RFC-934
trawić wiadomości i postara się zrobić wszystko, co w jego mocy, w inny sposób. Jeśli podsumowanie nie było
Zgodny z RFC-934 i istnieje ryzyko, że SPLIT mógł coś wyprodukować
niepoprawna, wówczas oryginalna wiadomość również zostanie zapisana, jeśli -i, w przeciwnym razie tak nie jest
oznaczony jako zapisany (aby mogło zostać zastosowane domyślne polecenie LEAVE). The -w (zegarek)
wymaga szczególnej ostrożności i wykryje każdy skrót inny niż RFC-934, nawet jeśli
nieprzestrzeganie jest poza tym nieszkodliwe; ponadto wszelkie końcowe śmieci są dłuższe
że 100 bajtów zostanie zapisane samodzielnie jako element podsumowania.

-a opcja dodaje adnotację do każdego elementu podsumowania linią nagłówka X-Digest-To:,
co jest połączeniem pól To: i Cc: oryginalnego podsumowania
wiadomość. Można to wykorzystać na przykład do wrzucenia podsumowania do kolejki i
następnie ponownie przetwórz każdy z jego elementów zgodnie z dodanym polem. Wreszcie,
-e opcja odrzuci nagłówek podsumowania tylko wtedy, gdy jego treść jest pusta (tj
moderator nie umieścił żadnego komentarza wiodącego). (Zwraca sukces, jeśli poczta dotarła
format skrótu i ​​poprawnie podzielony bez żadnego błędu)

SKLEP falcówka
Zapisz wiadomość we wskazanym folderze i zostaw kopię w systemowej skrzynce pocztowej.
falcówka Parametr ma tę samą konwencję nazewnictwa, co w przypadku SAVE. Ponownie,
ze względu na problemy z blokowaniem nie zaleca się pozostawiania poczty w skrzynce pocztowej
Maszyny Debiana. (Niepowodzenie, jeśli nie można zapisać wiadomości w pliku falcówka lub
skrzynka pocztowa)

ROZEBRAĆ SIĘ lista_pól_nagłówkowych
Usuń odpowiednie linie z nagłówka wiadomości. Na przykład plik „STRIP
Grupy dyskusyjne Widocznie-To” usunie odpowiednie wiersze, aby usunąć dowolne
Grupy dyskusyjne: lub Widocznie do: nagłówek. Możesz dodać znak „:” po każdym polu nagłówka
imię i nazwisko, jeśli chcesz, ale nie jest to absolutnie konieczne. Można określić nagłówki
za pomocą wyrażeń regularnych w stylu powłoki lub poprzez dołączenie „pliku”. (Nie zmienia się
status wykonania)

SUBST zmienna/nagłówek wyrażenie
Zastępuje wyrażenie w określonej zmiennej zdefiniowanej przez użytkownika (nazwa zaczynająca się
z #) lub odwołaniem wstecznym (cyfra) lub polem nagłówka (opcjonalnie kończącym się na
':'). Na przykład

PODST #foo /w/y/g

zastąpi zmienną zdefiniowaną przez użytkownika bla wszystkie w by y. Zobacz także PRZYPISZ
i TR.

W przypadku podstawień w polach nagłówka, takich jak:

SUBST Temat: /\[foo\]\s+//;

pasujące linie nagłówka zostaną przeformatowane po pomyślnym zastąpieniu,
co prawdopodobnie oznacza, że ​​oryginalne kontynuacje nie zostaną zachowane. Celem
podstawienie to cały nagłówek, z kontynuacjami znormalizowanymi do jednego
przestrzeń. Dzięki temu masz gwarancję niezależności od rzeczywistego nagłówka
formatowanie w oryginale.

Nie zapomnij o wydaniu RESYNC po polu nagłówka SUBST, ponieważ niektóre procedury
(jak POST) do przeanalizowanej tabeli skrótów nagłówka, aby wygenerować zapisany plik
wiadomość.

(Niepowodzenie w przypadku błędu w wyrażenie)

TR zmienna/nagłówek tłumaczenie
Wykonaj tłumaczenie określonej zmiennej, odwołania zwrotnego lub nagłówka
pole. Na przykład

TR 1 /AZ/az/

kanonizowałoby treść odniesienia 1 na małe litery. Z powodzeniem
transliterowane nagłówki są ponownie formatowane, nawet jeśli ich całkowity rozmiar nie jest taki
zmieniony. Zobacz także PRZYPISZ i PODSTAW. (Niepowodzenie w przypadku błędu w tłumaczenie)

UMASKA [-l] tryb
Zmienia maskę procesu na określoną tryb, które może być dziesiętne, ósemkowe
(jeśli jest poprzedzony „0”) lub szesnastkowym (zaczynającym się od „0x”). Notacja ósemkowa to
i tak jest to najczystszy sposób określenia umaski. Czyż plotki nie mówią, że jest to ósemka?
został wymyślony tylko w tym celu? ;-) Użyj -l możliwość zmiany umaski
tylko na czas trwania bieżącej reguły akcji. Należy pamiętać, że domyślny plik umask
określony w pliku konfiguracyjnym służy do resetowania agent pocztowyumask na początku
każde przetwarzanie poczty. (Nie zmienia statusu wykonania)

UNIKALNY [-akr] [były] [(lista tagów)]
Zapisz wiadomość w historii i oznacz wiadomość jako zapisaną, jeśli już tam była
Tam. Jeśli wiadomość jest nagrywana po raz pierwszy, przetwarzanie jest kontynuowane
normalnie. W przeciwnym razie wykonywany jest REJECT. Jeśli -r został użyty, stosuje się RESTART
zamiast tego podczas -a uruchomiłby ABORT. Na przykład, aby usunąć duplikat
wiadomości z list mailingowych, uruchom UNIQUE -a przed zapisaniem poczty. The -c
Opcja może być używana samodzielnie, aby faktycznie zapobiec zakłócaniu działania polecenia
przepływu wykonania, a później użyć statusu powrotu, aby zobaczyć, co się stało: UNIQUE
zwraca status niepowodzenia, jeśli wiadomość została już nagrana. Jeśli opcjonalne
były zostanie podany argument, to automat wejdzie w ten stan, jeśli zostanie wysłana wiadomość
znajdował się już wcześniej w bazie danych. Zobacz także ZAPIS i akapit zatytułowany
Korzystanie z Tagi in Rekord oraz Wyjątkowy aby uzyskać więcej informacji na temat lista tagów. (Nie udaje się
jeśli poczta została już nagrana)

WAKACJE [-l] na | poza | ścieżką [okres]
Zezwalaj lub nie zezwalaj na otrzymywanie wiadomości urlopowych. Gdy tryb urlopowy jest włączony poprzez
konfiguracyjny, wiadomość jest wysyłana za każdym razem, gdy użytkownik otrzyma spotkanie pocztowe
pewne wymagania, jak wyjaśniono w tej sekcji WAKACJE TRYB. Jeden z
warunkiem jest to, że flaga wakacji zmodyfikowana przez to polecenie ma wartość true. Ten
ułatwia zablokowanie możliwości wysyłania wiadomości urlopowych do grupy osób
instancja.

Zamiast on or poza, możesz określić nazwę pliku (~dozwolone podstawienie).
nowa ścieżka, która będzie używana do lokalizacji pliku wakacyjnego. Opcjonalnie możesz
określ ostatni parametr, który zostanie przyjęty jako okres, który ma zostać zastosowany, kiedy
wysyłanie wiadomości o urlopie. Zmiany w wiadomości urlopowej ścieżka jest
zabronione, gdy zmienna konfiguracyjna zaszczepiony jest włączony.

Jeśli używasz -l opcji, zmiany wprowadzane są lokalnie, przez czas obowiązywania reguły
tylko. Jeśli ODMÓWISZ przejścia na inną regułę, Twoje zmiany zostaną utracone. The
globalna wartość zmienionych parametrów ulega zmianie przy pierwszym lokalnym użyciu i
przywrócone po wprowadzeniu nowej reguły. (Nie zmienia statusu wykonania)

NAPISZ falcówka
Zapisz wiadomość w określonym folderze, usuwając wcześniej istniejący folder
to samo imię. Zatem kolejne polecenia WRITE będą nadpisywać poprzednie.
Jest to przydatne do przechowywania wyników poleceń systemowych uruchamianych przez cron. Nie próbuj używać
go z folderem MH lub folderem katalogowym, w przeciwnym razie będzie się zachowywał jak SAVE. (Nie udaje się
jeśli nie można zapisać wiadomości)

Egzekucja Status
Prawie wszystkie akcje modyfikują zmienną, która śledzi status wykonania
(analogicznie do zmiennej $? w powłoce). Zmienną tę można przetestować za pomocą metody -t or -f
na przykład opcję polecenia REJECT. Podajmy tylko jeden przykład: akcję ZAPISZ
wróci powiodło jeśli nie można zapisać poczty w określonym folderze. Jeśli to ZAPISZ
po poleceniu nastąpiło „REJECT -f FAILED”, wówczas nastąpiłoby wykonanie bieżącej reguły
zatrzymaj się, a automat będzie kontynuował analizę poczty w stanie NIEUDANYM.

Niektóre akcje nie modyfikują jednak tego ostatniego statusu wykonania. Zazwyczaj tak jest
działania, które podejmują decyzje w oparciu o ten status, lub po prostu działania, które nigdy nie mogą zawieść.
Te akcje specjalne to: ABORT, ASSIGN, BEGIN, KEEP, MACRO, NOP, REJECT, RESTART,
RESYNC, STIP i WAKACJE.

Szkoda, że ​​polecenia ONCE lub SELECT nie pozwalają na rozróżnienie pomiędzy
wykonanie i pomyślne wykonanie określonego polecenia. Być może nastąpi zmiana
sposobu działania tego schematu, ale powinien on pozostać kompatybilny wstecz.

Perl Ucieczka
Używając polecenia PERL, masz możliwość wykonywania filtrowania i innych
wyrafinowane działania bezpośrednio w Perl. To naprawdę różni się od tego, co możesz zrobić
dostarczanie poczty do skryptu Perla. Po pierwsze, nie jest tworzony żaden dodatkowy proces: skrypt
jest ładowany bezpośrednio do programu pocztowego i kompilowany w specjalnym pakiecie o nazwie hak pocztowy.
Po drugie, masz interfejs Perla do wszystkich poleceń filtrujących: każdej akcji filtrującej
jest powiązany z funkcją Perla (pisane małymi literami). Wreszcie niektóre z góry zdefiniowane
zmienne są ustawiane dla Ciebie przez agenta pocztowego.

Zanim przejdziemy dalej, pamiętaj, że ponieważ nie jest tworzony żaden dodatkowy proces, ty musi
nie zadzwoń do perla wyjście funkcjonować. Używać &Wyjście zamiast tego, tak że wyjście może zostać uwięzione. &Wyjście
pobiera jeden argument, kod wyjścia. Jeśli użyjesz 0, będzie to rozumiane jako sukces, jakikolwiek
inna wartość oznacza awarię (tzn. polecenie PERL zwróci status awarii). Za pomocą
perł wyjście funkcja bezpośrednio zabiłaby agent pocztowy i prawdopodobnie pociągnąłbym za sobą trochę poczty
straty.

Stosowane skrypty powinny pozostać proste. W szczególności należy unikać stosowania tzw
pakiet dyrektywę lub zdefiniuj funkcje z nazwą pakietu inną niż hak pocztowy (tj
pakiet, do którego ładowany jest skrypt). Niezastosowanie się do tego może spowodować konflikty nazw z
agent pocztowywłasne rutyny. W szczególności należy unikać główny pakiet. Należy pamiętać, że od
środowisko kompilacji jest ustawione na hak pocztowy, nie podając nazw pakietów w pliku
zmienne i podprogram są w porządku (właściwie to powinno działać w ten sposób).

Twój skrypt może robić z pocztą wszystko, co chce. Jednak w większości przypadków kończysz
za pomocą agent pocztowy prymitywów, aby zapisać pocztę lub przesłać ją dalej (ale możesz to zrobić swobodnie
przeprojektuj własne i oczywiście zamiast tego zadzwoń do nich). Interfejs jest prosty: każdy
funkcja przyjmuje tylko jeden argument, ciąg znaków, który jest argumentem polecenia, jeśli taki istnieje.
Na przykład w skrypcie ucieczki Perla wyraziłbyś:

{ ZAPISZ listę; PRZEKAŻ „użytkowników”; KARMIĆ ~/bin/nowa poczta -tty; ODRZUCIĆ }

z:

&zapisz('lista');
&forward('"użytkownicy"');
&karmić('~/bin/nowa poczta -tty');
&odrzucić;

Zasada jest prosta: każde polecenie zostaje zastąpione wywołaniem funkcji, a reszta zostaje zastąpiona
parametry ujęte w ciąg znaków, jeśli taki istnieje. Alternatywnie możesz określić parametry jako a
lista: wszystkie podane argumenty są łączone w duży szczęśliwy ciąg znaków za pomocą spacji
znak jako separator. Następnie na podstawie tego wyniku uruchamiany jest mechanizm podstawienia makro
ciąg argumentów.

Każda funkcja zwraca boolowski status powodzenia polecenia (tzn. 1 oznacza sukces). Dla
te funkcje, które zwykle nie modyfikują ostatniej zmiennej statusu wykonania filtra, a
sukces zawsze się zwraca. Dzięki temu można (intuicyjnie) napisać:

&wyjście(0) jeśli &zapisz('uucp');
&bounce('root') || &zapisz('awaryjne');

i uzyskaj oczekiwany rezultat. Poczta zostanie zapisana w folderze awaryjnym tylko wtedy, gdy
zapisywanie w folderze uucp nie powiodło się i nie można było odesłać poczty do katalogu głównego.

Ważne jest, aby zrozumieć, że te polecenia mają dokładnie ten sam efekt na
proces filtrowania, gdy są uruchamiane ze skryptu ucieczki Perla lub z pliku reguł
jako regularne działania. A &odrzucić wywołanie po prostu porzuci wykonywanie bieżącego perla
skrypt i automat filtrujący odzyskają kontrolę i spróbują nowego dopasowania. Ale Perl
zapewnia znacznie większą moc, w szczególności wywołania systemowe, struktury kontrolne, takie jak if oraz
dla, surowe wyrażenia regularne itp.

Specjalny Perl Tablica @INC (która kontroluje ścieżkę wyszukiwania dla wymagać) jest nieznacznie
zmodyfikowane poprzez dodanie ścieżki prywatnej biblioteki agenta pocztowego. To pozostawia otwarte drzwi dla
przyszłe skrypty perlowe biblioteki poczty, które mogą być wymagane przez skrypt perla.
Co więcej, Perl konfiguruje następujące zmienne specjalne przed wywołaniem twojego
scenariusz:

@agawa Argumenty skryptu podane przez polecenie PERL. Ten
array jest skonfigurowana dokładnie w taki sam sposób, jakiego można się spodziewać, jeśli ty
wywołał polecenie bezpośrednio z powłoki, z wyjątkiem tego @ARGV[0] jest
nazwa skryptu (ponieważ nie możesz używać Perla $0 dostać się do tego; że będzie
podać nazwisko listonosza).
$adres Część adresowa linii From:.
$cc Surowa zawartość linii Cc:.
@cc Lista adresów w wierszu DW:, z pominiętymi komentarzami.
$koperta Koperta pocztowa obliczona na podstawie pierwszego wiersza Od wiadomości.
$przyjazny Część komentarza linii From:, jeśli istnieje.
$od Zawartość linii From: z adresem i częścią komentarza.
%nagłówek Ta tabela, indeksowana według nazwy pola, zwraca surową zawartość pliku
odpowiedni wiersz nagłówka. Zobacz poniżej.
$msgpath Pełna nazwa ścieżki folderu (lub wiadomości w folderze MH), w którym znajduje się plik
miała miejsce ostatnia operacja zapisywania. Jest to przeznaczone do wykorzystania, jeśli chcesz
skonstruować własne powiadomienie o odbiorze poczty.
$długość Długość wiadomości w bajtach.
$linie Liczba wierszy wiadomości.
$ login Nazwa logowania adresu w wierszu Od:.
$pierwszeństwo Treść linii Precedence:, jeśli w ogóle istnieje.
@przekazany Lista nazw hostów (prawdopodobnie nieprzetworzone adresy IP, jeśli nie ma mapowania DNS).
w (obliczonym) wierszu nagłówka Relayed:.
$odpowiedź do Adres e-mail, na który należy wysłać odpowiedź wraz z komentarzem
zduszony.
$nadawca Nadawca wiadomości (może mieć komentarz), wyprowadzony w ten sam sposób co
Nadawca: linia jest obliczana przez agenta pocztowego.
$ temat Temat wiadomości.
$do Surowa zawartość linii To:.
@Do Lista adresów w wierszu Do: z pominiętymi komentarzami.

Tablica asocjacyjna %nagłówek daje dostęp do wszystkich pól w nagłówku pliku
wiadomość. Na przykład, $do jest naprawdę wartością $nagłówek{'Do'}. Klucz jest określony
używając znormalizowanej wielkości liter, tj. pierwsza litera każdego słowa jest wielka, a pozostałe
pisane małymi literami. Jest to niezależne od rzeczywistej fizycznej reprezentacji w pliku
sama wiadomość.

Pseudo klucze Głowa, Ciało oraz Wszystkie produkty odpowiednio daje dostęp do surowego nagłówka pliku
wiadomość, treść i całość wiadomości. The %nagłówek array jest tak naprawdę odniesieniem do
agent pocztowywewnętrzną strukturę danych, więc modyfikacja wartości będzie miała wpływ na filtrowanie
proces. Na przykład polecenie SAVE zapisuje plik GłowaThe Filtr X: linia, koniec
nagłówek (pojedynczy znak nowej linii), a następnie Ciało (jest to tylko przykład, a nie udokumentowany
funkcja :-). The =Ciało= klucz jest wyjątkowy: jest referencją Perla do skalara zawierającego
body z usuniętym kodowaniem przesyłania treści.

Zauważ, że $msgpath zmienna przechowuje tylko migawkę ścieżki folderu w momencie, gdy
nazwano ucieczkę PERL. Jeśli sam oszczędzasz w Perlu, musisz poszukać
na $main'folder_zapisano zamiast tego zmienna, aby uzyskać aktualną wartość ścieżki folderu.

I na koniec, oprzyj się pokusie przeczytania wewnętrznych informacji na temat agenta pocztowego i
bezpośrednio wywołując potrzebne procedury. Jeśli nie jest to udokumentowane na stronie podręcznika, może tak być
zostać zmienione bez powiadomienia przez kolejną łatkę. (I to nie oznacza, że ​​jest to udokumentowane
funkcje również mogą się nie zmienić... Jest to po prostu mniej prawdopodobne, a łatki wyraźnie to stwierdzają
to oczywiście.)

Program Środowisko
Wszystkie programy uruchomione przez agenta pocztowego za pośrednictwem RUN i znajomych dziedziczą następujące elementy
zmienne środowiskowe: HOME, USER i NAME, odpowiednio ustawione z konfiguracji
parametry Główna, użytkownik oraz Nazwa. Jeśli listonosz zostanie wywołany przez filtrować, a następnie ŚCIEŻKA
jest również ustawiony zgodnie z plikiem konfiguracyjnym (jeśli używasz filtra C) lub
cokolwiek ustawisz PATH (jeśli używasz filtra powłoki).

Wszystkie programy są uruchamiane z poziomu Główna informator. Obejmuje to skrypty
uruchamiany za pomocą polecenia PERL i haków pocztowych. Ten ostatni zostanie szczegółowo opisany
dalej w dół.

filet włączenie
Niektóre polecenia, takie jak FORWARD lub KEEP, umożliwiają określenie nazwy pliku w cudzysłowie
aby faktycznie załadować parametry z tego pliku. O ile nie zostanie podana pełna ścieżka, należy zastosować się do poniższych wskazówek
metoda służy do zlokalizowania pliku: najpierw w lokalizacji wskazanej przez filtr poczty
zmienna, jeśli jest ustawiona, w przeciwnym razie in katalog pocztowy i na koniec w katalogu domowym. Zauważ, że tak jest
nie jest ścieżką wyszukiwania w tym sensie, że if filtr poczty jest zdefiniowany i pliku tam nie ma, an
błąd zostanie zgłoszony.

Plik powinien zawierać listę każdego parametru (adresu, nagłówka lub wzorca) w wierszu obok
samo. W tym pliku dozwolone są komentarze w stylu powłoki (#), a początkowe białe znaki są dozwolone
przycięty (ale bez końcowych spacji).

Makra Zastępstwa
Wszystkie polecenia przed wykonaniem przechodzą przez mechanizm podstawienia makr. The
dostępne są następujące makra:

%% Prawdziwy znak procentu
%A Adres internetowy wyodrębniony z pliku Od: pole (ABC in [email chroniony]),
konwertowane na małe litery.
%C Nazwa procesora, na którym działa agent pocztowy. Jest to w pełni kwalifikowana nazwa hosta z rozszerzeniem
nazwa domeny, np lyon.eiffel.com.
%D Dzień tygodnia (0-6)
%H Nazwa hosta (nazwa komputera, na którym znajduje się plik agent pocztowy działa), bez żadnej domeny
nazwa. Zawsze małymi literami, niezależnie od nazwy komputera.
%I Nazwa domeny internetowej wyodrębniona z pliku Od: pole (bc in [email chroniony]),
konwertowane na małe litery.
%L Długość części ciała w bajtach, po usunięciu kodowania przesyłania treści.
%N Pełna nazwa nadawcy (login, jeśli nie istnieje)
%O Nazwa organizacji wyodrębniona z pliku Od: pole (b in [email chroniony]), przekonwertowany
małymi literami.
%R Temat oryginalnej wiadomości z początkowym Re: pominięty
%S Re: temat oryginalnej wiadomości
%T Czas ostatniej modyfikacji wysłanego pliku (polecenia WIADOMOŚĆ i POWIADOMIENIE)
%U Pełna nazwa użytkownika
%Y Pełny rok, czterocyfrowy (tzw rrrr format)
%_ Biała spacja (przydatna do umieszczania białych spacji w pojedynczych wzorach)
%& Lista selektorów, które uzyskały dopasowanie (wśród tych określonych za pomocą zwykłego
wyrażenie takie jak „X-*: /foo/i”. Jeśli znajdziemy bla podciąg w X-Mailer:
nagłówka, wówczas %& zostanie ustawione na tę wartość). Wartości na liście to przecinki
rozdzielony.
%~ Znak zerowy, usuwany z wynikowego ciągu.
%cyfra Wartość odpowiedniego odniesienia wstecznego z ostatniego dopasowania.
%#było Wartość zmiennej zdefiniowanej przez użytkownika było
%=było Wartość zmiennej konfiguracyjnej mailagenta było jak określono w
~/.agent pocztowy plik.
%d Dzień miesiąca (01-31)
%e Adres e-mail użytkownika (twój!).
%f Zawartość linii „From:”, coś w stylu %N <%r> lub %r (%N) w zależności od sposobu
program pocztowy jest skonfigurowany.
%h Godzina dnia (00-23)
%i Identyfikator wiadomości, jeśli jest dostępny (w przeciwnym razie jest to ciąg zerowy)
%l Liczba wierszy wiadomości po usunięciu kodowania przesyłania treści
%m Miesiąc roku (01-12)
%n Nazwa logowania nadawcy pisana małymi literami
%o Organizacja (gdzie agent pocztowy biegnie)
%r Adres zwrotny wiadomości
%s Temat oryginalnej wiadomości
%t Bieżąca godzina i minuty (w formacie GG:MM)
%u Nazwa logowania użytkownika
%y Rok (ostatnie dwie cyfry)
%[To] Wartość pola nagłówka (tutaj Do:)

Określony przez użytkownika Makra
Mailagent umożliwia definiowanie własnych makr na dwa sposoby: na poziomie filtra poprzez
MACRO lub na poziomie Perla we własnych poleceniach lub akcjach Perla.

Po zdefiniowaniu makro użytkownika (powiedzmy bla) można zastąpić za pomocą %-(bla). W przypadku
jednoliterowe makro, które można zoptymalizować %-F na przykład, tj. nawias może
być pominięte.

Istnieje sześć typów makr:

SKALARNY Podawana jest wartość skalarna, np.: czerwony. Wartością makra jest dosłowny skalar
wartości, nie dokonuje się dalszej interpretacji danych.

WYRAŻ Wyrażenie Perla będzie evaled, aby uzyskać wartość, np.: $czerwony. Zauważ, że
ocena zostanie przeprowadzona w terminie usrmac pakiet, więc jeśli się odwołujesz
do zmiennej w innym pakiecie, mądrze byłoby ją określić, jak w
$foo'bar.

CONST Działa tak samo jak WYRAŻ, ale wartość jest stała. Więc
gdy dokonane zostanie podstawienie po raz pierwszy, wyrażenie zostanie ocenione, a następnie
jego wynik jest buforowany.

FN Nazwa funkcji Perla (bez początkowego &), np główne_zrób to,
funkcja zostanie wywołana z jednym parametrem: nazwą samego makra.
To pozostawia otwarte drzwi dla dalszych konwencji zdefiniowanych przez użytkownika poprzez wymuszenie
ocena za pomocą jednej funkcji Perla.

PROG Program do uruchomienia w celu uzyskania aktualnej wartości. Obcinany jest tylko końcowy znak nowej linii,
inne są zachowane. Za każdym razem program jest forkowany. Na liście argumentów
podane programowi, %n jest rozwijane jako nazwa makra, którą próbujemy uzyskać
oceniać. Jeśli określisz to w regułach filtrowania, nie zapomnij o ucieczce od
Pierwszy %.

PROGC To samo co PROG, ale program jest forkowany tylko raz, a wartość jest buforowana
do późniejszego zapoznania się.

Na poziomie Perla cztery funkcje pozwalają manipulować i definiować makra (wszystkie są częścią
dotychczasowy usrmac pakiet):

nowe imie, wartość, typ)
Zastąp lub utwórz makro %-(nazwa). Na przykład:

new('foo', "$mailhook'header{'X-Foo'}", 'EXPR');

utworzyłoby nowe makro bla co rozwinęłoby się do wartości hipotetycznej
X-Foo header.

usuń (imię)
Usuń wszystkie wartości zarejestrowane dla makra.

naciśnij(imię, wartość, typ)
Ułóż nowe makro, tworząc je w razie potrzeby.

pop(imię) Usuń ostatnią definicję makra na stosie.

Dla każdego makra przydzielany jest jeden stos makr, co zapewnia pewnego rodzaju przybliżony zakres dynamiczny
może zostać wdrożony. Tworzenie makra poprzez naciskać to jak wzięcie zmiennej lokalnej w Perlu,
podczas tworzenia jednego po drugim nowych to po prostu przypisanie do zmiennej. Prawdopodobnie, muzyka pop jest jak wyjście z
blok z definicją zmiennej lokalnej i usunąć FreeS cała kolekcja makro o tej nazwie,
tj. usuwa cały stos.

Na poziomie filtra polecenie MAKRO ma trzy opcje. Domyślnie polecenie definiuje
nowe makro za pomocą naciskać, a pozostałe opcje umożliwiają dostęp do jednej z pozostałych
funkcje interfejsu. Należy pamiętać, że definicje makr są zachowywane w przypadku poleceń ZASTOSUJ.

Określony przez użytkownika Logowanie
W większości przypadków, gdy będziesz pisać nowe polecenie filtrowania poczty lub haka w Perlu, tak się stanie
potrzebujesz specjalnego logowania, aby zgłosić problem lub śledzić to, co robisz
występują.

Zwykle dzienniki są dołączane do pliku dziennik agenta plik, dzwoniąc &main'add_log(ciąg) (Patrz
podrozdział Ogólne Cel procedury). W przypadku zwykłych działań agenta pocztowego jest to w porządku.

Ale mailagent umożliwia zdefiniowanie alternatywnych plików rejestrowania, do których odnosi się nazwa. To ogólne
interfejs rejestrowania jest zdefiniowany w pliku usrlog pakiet:

nowe imie, file, flaga)
Rejestruje nowy plik dziennika znany jako Nazwa i zrobione filet. Jeśli podana jest nazwa ścieżki
ten plik nie jest absolutny, jest zakorzeniony w pliku katalog_logowania informator. Gdyby flaga is
ustawiona na true, wszelkie rejestracje wykonane w tym pliku również zostaną skopiowane do ustawień domyślnych
ogólnosystemowy plik dziennika. Nic nie zostanie zrobione, jeśli plik dziennika o tej samej nazwie już istnieje
zostało zdefiniowane.

usuń (imię)
Usuwa plik dziennika znany jako Nazwa. Dalsze rejestrowanie w tym pliku to
przekierowany do domyślnego pliku dziennika.

main'usr_log(nazwa, strunowy)
Dodaje wpis do pliku dziennika Nazwa. Domyślny plik dziennika jest znany jako domyślnym oraz
nie mogą zostać przedefiniowane ani usunięte. Należy pamiętać, że ta funkcja jest dostępna z poziomu
główny pakiet. Nazywanie tego za pomocą Nazwa ustawiony na ciąg 'domyślny' jest w większości
równoznaczne z bezpośrednim dzwonieniem main'add_log z godnym uwagi wyjątkiem, że
-i Opcja mailagent nie będzie honorowana w takim przypadku. To może być lub nie
przydatne dla Ciebie.

Jeśli zadzwonisz &main'usr_log z nieistniejącą nazwą pliku dziennika, logowanie jest przekierowywane do
domyślny ogólnosystemowy plik dziennika zdefiniowany w pliku ~/.agent pocztowy.

Dynamicznie ładowanie Nowości Code
W procedurach Perla (polecenia zdefiniowane przez użytkownika, zaczepy Perla itp.) możesz czuć taką potrzebę
dynamicznie załaduj nowy kod do agenta pocztowego. Masz bezpośredni dostęp do wnętrza
procedura używana przez agenta pocztowego do wdrożenia polecenia REQUIRE lub załadowania nowego filtrowania
polecenia np.

Korzystanie z tzw ładowanie dynamiczne interfejs zapewnia dodatkowe funkcje:

· Ścieżka biblioteki publicznej mailagenta jest automatycznie dodawana do tablicy @INC, która
pozwala zdefiniować własne, ogólnosystemowe lub prywatne pliki bibliotek Perla (private
ścieżka biblioteki jest zdefiniowana przez perlib zmienna konfiguracyjna, ścieżka do biblioteki publicznej
zostało zdefiniowane w czasie instalacji).

· Podobnie jak Perl wymagać, mailagent śledzi, które pliki zostały załadowane do jakich
pakiety i nie będzie ponownie ładować tego samego pliku w tym samym pakiecie dwa razy.

· Można mieć pewność, że w załadowanym pliku będzie zdefiniowana konkretna funkcja,
z komunikatem o błędzie, jeśli tak nie jest.

· Korzystasz z domyślnego rejestrowania wykonywanego przez ładowanie dynamiczne gdy wystąpi jakiś błąd.

Aby to wszystko zrobić, dzwonisz:

&dynload'load(pakiet, file, funkcjonować)

określając pakiet, do którego chcesz załadować plik i opcjonalnie nazwę pliku
funkcja, którą należy zdefiniować po załadowaniu pliku (pozostaw to pole nieokreślony if
nie masz takiego ograniczenia). Rutyna powraca nieokreślony jeśli plik nie może być
załadowany (najprawdopodobniej nieistniejący plik), 0 jeśli plik został załadowany, ale zawierał składnię
błąd lub nie zdefiniowano określonej funkcji oraz 1 dla sukcesu.

Korzystanie z Pewnego razu Polecenia
Konstrukcje ONCE pozwalają określić, że dane polecenie ma być uruchamiane raz w każdym okresie (dzień,
tydzień...). Polecenie jest identyfikowane przez a Nazwa oraz etykieta, połączenie tych dwóch istot
unikalny. Dlaczego nie tylko jeden identyfikator? No cóż, byłoby dobrze, ale załóżmy, że tego chcesz
raz w tygodniu wyślij komuś wiadomość w odpowiedzi. Możesz użyć adresu e-mail
osoba jako identyfikator polecenia. Ale co, jeśli chcesz wysłać także inną wiadomość do
ten sam adres, tym razem raz w miesiącu?

Oto prototypowe użycie ONCE, które z wyjątkiem tego działa jak program wakacyjny
że wysyła odpowiedź tylko raz dziennie na podany adres:

{ RAZ (%r, wiadomość, 1d) WIADOMOŚĆ ~/.wiadomość };

Opiera się to na mechanizmie podstawienia makr, który wysyła przechowywaną wiadomość tylko raz dziennie
in ~/.wiadomość. Nie używaj tagu wakacje, chyba że wiesz, co robisz: to jest
tag używany wewnętrznie przez agenta pocztowego w trybie urlopowym. Przypomnijmy, że nie ma selektora ani wzorca
jest rozumiany jako „Temat: *”, stąd reguła jest zawsze wykonywana ze względu na ten wzorzec
zawsze pasuje.

Sygnatury czasowe powiązane z każdym poleceniem są przechowywane w plikach w katalogu Hash.
Nazwa jest używana jako klucz mieszający do obliczenia nazwy pliku (dwie pierwsze litery
są używane). Wewnątrz pliku znaczniki czasu są sortowane według nazwy, a następnie według znacznika. Oczywiście ty
mógłby powiedzieć (odwracając znacznik i nazwę):

{ RAZ (wiadomość, %r, 1d) WIADOMOŚĆ ~/.wiadomość };

ale byłoby to prawdopodobnie mniej wydajne, ponieważ pierwsze mieszanie zostałoby wykonane na a
stałe słowo, dlatego wszystkie znaczniki czasu będą znajdować się w pliku Hash/m/e (gdzie Haszysz is
nazwa twojego katalogu mieszającego, czyli haszysz parametr w konfiguracji
plik).

Korzystanie z Tagi in Rekord oraz Wyjątkowy
Zarówno polecenia RECORD, jak i UNIQUE umożliwiają określenie listy znaczników oddzielonych przecinkami pomiędzy znakami „(”
I ')'. Dla każdego tagu znajdującego się na liście istnieje oddzielny wpis w bazie danych
powiązany z identyfikatorem wiadomości. Gdy wiadomość zostanie nagrana dla co najmniej jednego z tagów,
polecenie „nie powiedzie się”. Nieokreślenie żadnych tagów oznacza szukanie jakiegokolwiek wystąpienia tego
identyfikator wiadomości, niezależnie od tego, czy jest ona oznaczona, czy nie.

Jest to bardzo przydatne, gdy odbierasz pocztę przesyłaną do różnych list mailingowych i do Ciebie
chcesz zapisać jedno wystąpienie wiadomości w każdym folderze, ale nadal się przed tym strzeż
duplikaty. Możesz powiedzieć:

Do DW: unix-wizards {
UNIKALNE (czarodzieje);
ZAPISZ kreatorów;
ODRZUCIĆ;
};
Do DW: majordomo-users {
UNIKALNE (majordomo);
ZAPISZ majordomo;
ODRZUCIĆ;
};

i tylko jedno wystąpienie wiadomości trafi do każdego folderu. Kiedy masz foldery
w przypadku sprzecznych interesów możesz użyć listy tagów zamiast pojedynczego tagu. Dla
na przykład, zakładając, że chcesz zachować jedną kopię wiadomości przesyłanych krzyżowo do obu odległość-
Użytkownicy oraz użytkownicy agentów, ale przygotuj oddzielną kopię, jeśli zostanie ona również przesłana pocztą elektroniczną majordomo-użytkownicy,
następnie powiedz:

Do DW: majordomo-users {
UNIKALNE (majordomo);
ZAPISZ majordomo;
ODRZUCIĆ;
};
Do DW: dist-users {
UNIKALNY (odległość, agent);
ZAPISZ użytkowników zdalnych;
ODRZUCIĆ;
};
Do DW: użytkownicy-agenci {
UNIKALNY (odległość, agent);
ZAPISZ użytkowników zdalnych;
ODRZUCIĆ;
};

Jeśli masz jakąś regułę używającą UNIQUE bez żadnych tagów, będzie ona pasować, gdy co najmniej jeden
wystąpienie wiadomości zostało zarejestrowane, niezależnie od tego, w jakim tagu (jeśli w ogóle jakikolwiek) został użyty
pierwsze miejsce.

Określanie A Okres
Parametr kropki poleceń ONCE lub okres wakacji parametr Twojej konfiguracji
plik ma następujący format: liczba, po której następuje modyfikator. Modyfikatorem jest atom
okres taki jak dzień lub tydzień, liczba to liczba okresów atomowych w ostatnim okresie
powinno być równe. Dostępne modyfikatory to:

minuta
h godzina (60 minut)
d dzień (24 godziny)
tydzień (7 dni)
M miesiąc (30 dni)
rok (365 dni)

Wszystkie okresy są wewnętrznie przeliczane w sekundach, chociaż tak naprawdę nie obchodzi Cię to...
Przykłady prawidłowych okresów wahają się od „1m” do „136y” na komputerze 32-bitowym (dlaczego?).

Limit czasu
Aby uniknąć posiadania tzw agent pocztowy oczekiwanie na polecenie w nieskończoność, maksymalne wykonanie
Domyślnie dozwolony jest czas jednej godziny. Po upływie tego czasu dziecku wysyła się:
Sygnał SIGTERM. Jeśli nie umrze w ciągu następnych 30 sekund, wysyłany jest sygnał SIGKILL. Wyjście
z programu, jeśli takowe istnieją, są odsyłane do użytkownika. To domyślne zachowanie może
można zmienić poprzez ustawienie odpowiedniego bieg maks zmienną w pliku konfiguracyjnym, aby pozwolić na więcej
czas na wykonanie polecenia.

Istnieje również filtrować przekroczenie limitu kolejki. Aby złagodzić obciążenie systemu, C filtrować
program domyślnie czeka 60 sekund (lub cokolwiek innego czekać w kolejce zostało ustawione w pliku konfiguracyjnym)
przed uruchomieniem agent pocztowy. Aby uniknąć konfliktów, wiadomości oczekujące w kolejce według pierwszego filtru (który
wtedy będę spać czekać w kolejce sekundy) nie są przetwarzane przez agent pocztowy's -q opcja do
przynajmniej są przetrzymanie w kolejce sekundy. Kolejnym parametrem związanym z kolejką jest kolejka stracona, dotychczasowy
ilość sekund, po których agent pocztowy oznaczy wiadomości jako „utracone” podczas umieszczania na liście
kolejka.

Na koniec można również skonfigurować politykę limitu czasu blokowania. Domyślnie zamek jest uszkodzony
gdy ma godzinę (skonfigurowane przez plik zamek zmienna) i agent pocztowy tylko sprawi
blokada maks próby, rozdzielone przez opóźnienie blokady sekundy na zdobycie blokady. Następnie będzie to kontynuowane
niezależnie od tego, czy ma ten zamek. Jeśli chcesz mieć bezpieczną politykę blokowania, upewnij się blokada maks
czasy opóźnienie blokady jest większa zamek, przy czym ten parametr jest „wystarczająco duży”.

unikanie Metalowe ramki
agent pocztowy pozostawia nagłówek „X-Filter:” w każdej przefiltrowanej wiadomości, który z kolei jest używany
do wykrywania pętli. Jeśli wiadomość już odfiltrowana ma zostać przetworzona, plik agent pocztowy wchodzi
stan specjalny _SEEN_. Ten stan jest wyjątkowy w tym sensie, że jest wbudowany, a nie dopasowany
przez WSZYSTKICH, a niektóre akcje nie są dostępne, a mianowicie: WSTECZ, ODBIJ, FEED, FORWARD,
DAJ, POWIADAMIAJ, PRZEŚLIJ, PRZEPROWADŹ, WYŚLIJ, OCZYŚĆ, KOLEJKUJ i URUCHOMIJ. Należy również pamiętać, że chociaż plik ONCE
i konstrukcje SELECT są włączone, nie pozwolą ci wykonywać niedozwolonych poleceń.
W przeciwnym razie stan _SEEN_ zachowuje się jak każdy inny stan, który możesz wybrać lub zanegować, więc a
strażnik nie wybierze reguły, gdy będziemy w stanie _SEEN_.

Stan _SEEN_ ułatwia obsługę wiadomości e-mail, które zapętlają się z powodu zapętlenia aliasu
nie mam nad czym panować. Jeśli w stanie _SEEN_ nie zostanie znaleziona żadna akcja, wiadomość pozostanie w
jak zwykle skrzynka pocztowa. Ponadto, jeżeli nie zostanie dokonany zapis, zostanie wykonane WYJŚCIE. To jest normalne
zachowanie.

Nagłówek „X-Filter:” jest dodawany dopiero po zapisaniu wiadomości. Działania takie jak RURA lub
GIVE nie oznacza wiadomości jako zapisanej i dlatego to robi nie dodaj ten nagłówek
linia. Możesz dodać jeden za pomocą ANNOTATE, jeśli chcesz zapobiec pętlom, na wypadek, gdyby program to zrobił
którym przekazujesz wiadomość, może zwrócić ją w jakiś dziwny sposób.

Wybierz kraj ⌄ Akta
Tekst wiadomości do odesłania (dla WIADOMOŚCI lub POWIADOMIENIA) jest odczytywany z pliku i
przechodzi przez mechanizm makrosubstytucji. Specjalne makro %T jest ustawiona na datę
ostatniej modyfikacji dokonanej w tym pliku. Format jest dzień miesiącai dodawany jest rok
przed miesiącem tylko wtedy, gdy różni się on od roku bieżącego.

Na początku wiadomości możesz umieścić linie nagłówka. Te linie zastąpią plik
domyślnie dostarczone linie. Przydatna może być zmiana domyślnego tematu lub dodanie go
dodatkowe pola, takie jak nazwa Twojej organizacji. Koniec nagłówka jest podany przez
pierwszą napotkaną pustą linię. Jeśli góra wiadomości, którą chcesz wysłać, wygląda jak
nagłówka poczty, możesz go zabezpieczyć, dodając pustą linię na samej górze pliku. Ten
fikcyjna linia zostanie usunięta z wiadomości, a cały plik zostanie wysłany jako treść
część.

Oto przykład pliku wakacyjnego. Dodajemy kopię oraz nazwę naszego
organizacja w nagłówku:

Cc: baran
Organizacja: %o
Pierwszeństwo: luzem

[Ostatnia wersja wprowadzona na %T]

Drogi %N:

Otrzymałem Twoją wiadomość dotyczącą „%R”.
Przeczytam jak tylko wrócę z wakacji.

Pozdrawiamy,
--
%U <%u@%C>

WAKACJE TRYB


Kiedy nadejdzie czas urlopu, istnieje możliwość ustawienia agenta pocztowego w trybie wakacyjnym.
Każdy okres wakacji, wiadomość plik vac zostaną odesłane do użytkownika (z makrami
podstawienia), jeśli użytkownik jest wyraźnie wymieniony w Do or Cc pole i czy nadawca jest
nie jest to użytkownik specjalny (korzeń, uucp, aktualności, Demon, naczelnik poczty, newsmaster, Usenet, Przesyłka pocztowa-
demon, Mailer-Agent or nikt). Dopasowania są dokonywane bez uwzględniania wielkości liter, tzw
DEMON POCZTY zostanie również uznany za użytkownika specjalnego. Ponadto każda wiadomość oznaczona tagiem
z Precedens: pole ustawione na objętość, podstęp or śmieć nie wywoła komunikatu o urlopie.
To wbudowane zachowanie można oczywiście przeciążyć odpowiednimi regułami (poprzez testowanie i
samodzielne wystawienie wiadomości urlopowej poprzez WIADOMOŚĆ).

Wewnętrznie agent pocztowy używa komendy RAZ ze znacznikiem (%R, wakacje, $wakokres). Oznacza to
nie wolno używać wakacje taguj własne polecenia ONCE, chyba że wiesz, kim jesteś
robić.

Poza tym wiadomość o urlopie jest wysyłana tylko wtedy, gdy nie została wydana żadna komenda "WAKACJE WYŁĄCZONE", lub
jeśli kolejne "WAKACJE na" nadpisały poprzednie. Należy pamiętać, że niezależnie od tego, czy reguła pasuje do lub
nie, nie ma znaczenia dla algorytmu. Domyślnie wiadomość o urlopie jest oczywiście dozwolona
kiedy wakacje parametr konfiguracyjny jest ustawiony na on.

Jeśli nie podoba Ci się fakt, że wiadomość urlopowa jest wysyłana do osób, do których adresujesz
otrzymasz tylko kopię, możesz napisać na górze pliku reguł:

DW: ram {WAKACJE wolne; ODRZUCIĆ };

Oczywiście musisz zastąpić własną nazwę logowania baran. Nie możesz użyć
ten sam schemat, aby umożliwić wysyłanie wiadomości wakacyjnych do specjalnych użytkowników, takich jak korzeń, ponieważ test dla
„specjalność” występuje po fladze trybu wakacyjnego. Jest to rozumiane jako cecha
zapobiega głupim błędom, takim jak używanie r* zamiast baran w poprzedniej zasadzie.

Możesz także ustawić inną wiadomość urlopową, przeznaczoną tylko dla osób z Twojej
organizacji, biorąc pod uwagę wrażliwy charakter ujawnianych informacji ;-). Prosty sposób
zrobienie tego to:

Od: /^\w+$/, /^\w+@\w+$/, /^[\w.-]+@.*\.hp\.com$/i
{ WAKACJE ~/.hp_wakacje 1w; ODRZUT HP };

Zakładając, że domeną mojej organizacji jest .hp.com i że wiadomości nie mają żadnej domeny
są wiadomościami lokalnymi, powyższa reguła konfiguruje plik ~/.hp_wakacje, wysyłany raz w tygodniu, dla
wszyscy pracownicy HP.

Komenda VACATION nie pozwoli Ci zmienić ścieżki wiadomości (ale pozwoli na częstotliwość
i tak się zmienia), kiedy zaszczepiony zmienna konfiguracyjna jest ustawiona na ON. To ma być
stosowany w sytuacjach awaryjnych, gdy zmieści się tylko jedna wiadomość urlopowa. Na przykład kiedy
jesteś na zwolnieniu lekarskim, prosta wiadomość wyzwalająca wysłana z domu do Twojego listonosza może się zmienić
Twój ~/.agent pocztowy konfiguracja, aby wymusić ~/.jestem chory wiadomość, niezależnie od tego, jaka jest
różne zasady mają do powiedzenia. Właściwie właśnie dlatego dodano tę funkcję,
niesamowity... :-)

ZMIENNE


Zwraca się uwagę na następujące zmienne: mogą pochodzić ze środowiska lub być
ustawić w pliku reguły:

filtr poczty
wskazuje, gdzie należy szukać załadowanych wzorców, jeśli jest to nazwa pliku
nie w pełni wykwalifikowany. Jeśli nie jest ustawiony, katalog pocztowy zostanie użyty zamiast tego. Jeśli katalog pocztowy
również nie jest ustawiony, używany jest katalog domowy.

katalog pocztowy to lokalizacja folderów poczty. Dowolna ścieżka względna jest rozumiana jako
zaczynając od katalog pocztowy. Jeśli nie jest ustawiony, ~/Poczta Jest używane.

Zmienne te pozostają aktywne w zakresie pliku reguł. Powinien być zastępcą
reguł (poprzez hak reguł lub polecenie ZASTOSUJ), propagowane są bieżące wartości
do nowego zestawu reguł, chyba że zostanie to zastąpione w alternatywnym pliku reguł. W każdym razie
poprzednia wartość zostaje przywrócona, gdy kontrola zostanie przeniesiona z powrotem do poprzedniego zestawu reguł.
Oznacza to, że te zmienne mają zasięg dynamiczny, a nie statyczny.

AUTOMATYCZNE PODZIĘKOWANIA


W dowolnym miejscu poczty może znajdować się wyrównana do lewej linia @RR, która odeśle wiadomość zwrotną
potwierdzenie nadawcy wiadomości. Po @RR może opcjonalnie nastąpić an
adres, w takim przypadku potwierdzenie zostanie wysłane na ten adres. W rzeczywistości
(ale niech to pozostanie tajemnicą), dzięki temu mogę zobaczyć, kto zarządza moim plikiem
program pocztowy, a kto nie...

Wyślij maila program zazwyczaj implementuje taką funkcję poprzez nagłówek Return-Receipt-To:
wiersz, który odsyła cały nagłówek po pomyślnym dostarczeniu. Jednak tak nie jest
zaimplementowano we wszystkich agentach transportu poczty, a @RR jest dobrą alternatywą :-).

UWAGA BENA


Na tej stronie podręcznika zawsze pisałem pola nagłówka pierwszą literą
każde słowo pisane wielkimi literami, jak w Zwrot-Pokwitowanie-Do. Ale dokument RFC-822 nie narzuca takiej pisowni
konwencję, a nadawca poczty mógłby legalnie przepisać poprzednie pole jako zwrot-potwierdzenie-do
(i faktycznie tak jest Wyślij maila w swoich własnych plikach kolejki poczty prywatnej).

Jednakże zawsze należy określić nagłówki w pliku, który można nazwać a znormalizowany walizka
(w każdym razie dla nagłówków). Listonosz prawidłowo rozpozna cc:, CC: or DW: w mailu
wiadomość i umożliwi wybranie tych pól za pomocą pliku znormalizowanego DW: selektor. W
w rzeczywistości dokonuje za Ciebie normalizacji, oraz a cc: selektor nie zostanie rozpoznany jako
taki. Oczywiście w samym nagłówku nie dokonuje się żadnych fizycznych zmian.

Dotyczy to również nagłówków określonych w poleceniu STRIP lub KEEP. Jeśli napiszesz ROZEBRAĆ SIĘ
Cc, poprawnie usunie wszelkie cc: linia. Podobnie, jeśli używasz wyrażeń regularnych do
określić selektor, Odnośnie.*: pasowałby do obu oryginałów Odebrane: oraz Ścieżka powrotna: pola,
znane wewnętrznie poprzez ich znormalizowaną reprezentację.

MAIL HACZYKI


Haki pocztowe umożliwiają agentowi pocztowemu przezroczyste wywoływanie niektórych skryptów lub wykonywanie dalszych czynności
przetwarzanie wiadomości. Haczyki te są aktywowane poprzez SAVE, STORE lub LEAVE
polecenia. Mianowicie zapisanie w folderze, w którym ustawiony jest bit wykonywalny, spowoduje wywołanie specjalnego
przetwarzanie. Domyślnie folder jest traktowany jako program, do którego poczta powinna być przesyłana potokiem
Do. Jeżeli program „folder” zwróci status zerowy, wówczas wiadomość zostanie rozpatrzona zapisywane by
listonosz. W przeciwnym razie zostanie uruchomione całe przetwarzanie powiązane z poleceniami składowania, które zakończyły się niepowodzeniem
(w tym awaryjne próby zapisywania). Foldery wykonywalne zapewniają przejrzysty sposób (od
punktu widzenia pliku reguł), aby radzić sobie ze specjalnym rodzajem komunikatów.

W rzeczywistości dostępnych jest pięć różnych typów haczyków. Pierwsza z nich to równina
folder wykonywalny, o którym właśnie mówiliśmy. Ale w rzeczywistości oto, co naprawdę się dzieje, kiedy
polecenie zapisywania wykrywa folder wykonywalny: agent pocztowy skanuje pierwszą linię pliku
folder (właściwie pierwsze 128 bajtów) i szuka czegoś zaczynającego się od #: i
po którym następuje jedno słowo opisujące specjalny rodzaj haka. To jest w podobny sposób
jądro zajmuje się #! zaczepiać programy wykonywalne. Jeśli nie znaleziono #: lub #: jest
potem trochę śmieci agent pocztowy decyduje, że jest to prosty program i obsługuje pocztę
wiadomość do tego programu. Koniec historii.

Ale jeśli po tokenie #: następuje (dopuszczalne spacje, wielkość liter nie ma znaczenia) następuje jeden z
następujące słowa, wówczas podejmowane są specjalne działania:

reguły W pliku znajduje się zestaw reguł agenta pocztowego, które należy zastosować. Nowy listonosz
tworzony jest proces, aby faktycznie sobie z nimi poradzić, a status wyjścia jest propagowany
z powrotem do pierwotnego agenta pocztowego.

Audyt Jest to podobne w duchu do tego, co robi pakiet audyt.pl Martina Streichera,
stąd nazwa tego haka. Specjalne zmienne konfigurowane przez PERL
inicjowane są polecenia filtrujące, a skrypt ładowany jest do pliku specjalnego hak pocztowy
przestrzeń nazw pakietu, która zapewnia także interfejs do własnego agenta pocztowego
rutyny. Możesz bezpiecznie korzystać z wyjście funkcjonować tutaj, ponieważ dodatkowy widelec is
zrobione. Jest to jedyna różnica pomiędzy Audyt oraz Perl hak.

dostarczyć To samo co w przypadku Audyt hook, ale standardowe wyjście twojego skryptu to
monitorowane przez agent pocztowy i rozumiane jako polecenia filtrujące agenta pocztowego. Od
pomyślny zwrot, zostanie wywołany proces agenta pocztowego, aby faktycznie go wykonać
polecenia w wiadomości. Ponownie, jest to podobne w duchu do Chipa Salzenberga
dostarczyć package i podałem nazwę tego hooka.

Perl Ten hak jest taki sam jak Audyt ale jest wykonywany bez rozwidlania nowego
mailagent i masz interfejs Perla do poleceń filtrujących mailagenta.
Nie ma różnicy w przypadku polecenia PERL, ponieważ zostało ono zaimplementowane
sposób, wywołując agenta pocztowego i wymuszając wykonanie polecenia PERL. To jest
podobny w duchu do słynnego Larry'ego Walla Perl język i to on jest za to odpowiedzialny
nazwa tego haka :-).

Jak wspomniano wcześniej na tej stronie podręcznika, hook jest wywoływany za pomocą metody Główna katalog
określone w twoim ~/.agent pocztowy (który może różnić się od Twojego prawdziwego katalogu domowego, o ile
agent pocztowy or hak pocztowy są zaniepokojeni).

Dla tych hooków, które ostatecznie są uruchamiane przez Perla, specjalna tablica @INC zawiera własną tablicę mailagenta
dołączona do niego ścieżka do biblioteki prywatnej, tak że wymagać pierwsze spojrzenie w to miejsce.

LORNETKA SKŁADANA


Folder to plik lub katalog, który może być celem dostarczenia przez listonosza,
to znaczy argument poleceń typu SAVE.

Teczka Format:
Domyślnie wiadomości e-mail są zapisywane w folderach zgodnie ze standardową skrzynką pocztową w stylu UNIX
format: każda wiadomość zaczyna się od nagłówka Od wiersz zawierający adres nadawcy i
data. Jednak ustawiając mmdf parametr z ~/.agent pocztowy na ON, agent pocztowy
będzie mógł zapisywać wiadomości w formacie MMDF: każda wiadomość jest umieszczona pomiędzy dwiema liniami
składający się z czterech znaków Ctrl-A (kod ASCII 1) i wiodących Od linia jest usuwana.

Po włączeniu trybu MMDF każdy folder zostanie przeskanowany w celu sprawdzenia, czy jest to plik w stylu UNIX lub
skrzynkę pocztową w stylu MMDF, a wiadomość zostanie odpowiednio zapisana. Podczas zapisywania do nowego
folderze domyślnym jest utworzenie skrzynki pocztowej w stylu UNIX, chyba że mmdfbox konfiguracja
zmienna została ustawiona na ON, w którym to przypadku przeważa format MMDF.

Należy pamiętać, że format MMDF jest również standardem dla folderów spakowanych w formacie MH, dlatego włączenie formatu
W trybie MMDF możesz faktycznie dostarczać bezpośrednio do spakowanych folderów. Komenda MH inc
i tak jest w stanie włączyć pocztę z dowolnej formy, tj. nie ma znaczenia, czy
folder jest w formacie UNIX (zwanym także stylem UUCP) lub w formacie MMDF.

Obsługiwane są także foldery w stylu MH. Jest to głównie katalog, w którym przechowywane są wiadomości
w pojedynczych plikach. Aby zapisać bezpośrednio w folderze MH, wystarczy poprzedzić nazwę folderu
za pomocą „+”, tak samo jak w przypadku poleceń MH. Niewidoczne sekwencje określone w pliku
Profil MH (tzw mhprofil parametr w twoim ~/.agent pocztowy, domyślnie ~/.mh_profil) Będzie
być poprawnie zaktualizowane, jako sklep rcv doskonałe.

Jeśli folderem docelowym jest katalog, agent pocztowy próbuje dostarczyć przesyłkę indywidualnie
numerowany plik. Jeśli obecny jest plik prefiksu (parametr konfiguracyjny msgprefiks, domyślnie
.msg_prefiks), jego pierwsza linia służy do określenia podstawowej nazwy wiadomości, następnie a
numer jest dołączany w celu podania nazwy pliku wiadomości, którego należy użyć. To znaczy, jeśli nie ma
takiego pliku, folder będzie wyglądał jak folder MH, jednak bez żadnego pliku sekwencji MH.

Teczka Kompresja
Jeśli masz jedno lub więcej powszechnie dostępnych narzędzi do kompresji plików, takich jak
kompresować or gzip w Twojej PATH (zgodnie z konfiguracją ~/.agent pocztowy), możesz chcieć użyć folderu
kompresję, aby zaoszczędzić trochę miejsca na dysku, zwłaszcza gdy jesteś poza domem przez jakiś czas i nie
chcesz, aby Twoja poczta wypełniała system plików.

Aby uzyskać kompresję folderów, musisz skonfigurować plik, o którym mowa w kompresować
zmienna konfiguracyjna. Plik ten musi zawierać nazwy folderów, po jednej w każdym wierszu, z pustymi wierszami
akceptowane i dozwolone komentarze w stylu powłoki (#). Do określenia można użyć wzorców w stylu powłoki
foldery i zostanie podjęta próba dopasowania pełnej ścieżki folderu (~
następuje podstawienie). Jeśli nie określisz wzorca rozpoczynającego się od znaku „/”
znak, wówczas zostanie podjęta próba dopasowania podstawowej nazwy folderu (tzn. ostatniej
składnik ścieżki folderu). Jeśli chcesz skompresować wszystkie foldery, po prostu umieść plik
pojedynczy „*” w tym pliku.

Mailagent używa rozszerzenia nazwy pliku, aby określić, jaki schemat kompresji jest używany dla pliku
określonego folderu. Plik, o którym mowa w specyfikacje zmienna konfiguracyjna (domyślnie
to $spool/compressors) służy do definiowania poleceń, których będzie używał agent pocztowy
operacje kompresji, dekompresji i cat dla określonego rozszerzenia.

sprężarki plik zawiera wiersze o następującej postaci:

etykieta rozbudowa prog_kompresji zdekompresuj_prog cat_prog

gdzie:

etykieta to logiczna nazwa schematu kompresji. Zwykle jest to to samo, co
nazwa programu użytego do kompresji, ale może być inna
z jakiegoś nieprzewidzianego powodu. Musi być unikalny we wszystkich rekordach w pliku.

rozbudowa to rozszerzenie rozpoznawane jako należące do określonego znacznika. To musi być
unikalny we wszystkich rekordach w pliku.

prog_kompresji
to nazwa polecenia, które należy uruchomić w celu skompresowania folderu. Program musi
zamień nieskompresowany plik na skompresowany z rozszerzeniem
dołączone do nazwy pliku (np kompresować or gzip).

program_rozpakowywania
to nazwa polecenia, które należy uruchomić w celu zdekompresowania folderu. Program musi
zamień skompresowany plik na nieskompresowany bez rozszerzenia
(lubić rozpakuj or pistolet).

cat_prog to nazwa polecenia wyświetlającego nieskompresowaną zawartość pliku skompresowanego
folder na standardowe wyjście (np zkat or gzcat).

Pola oddzielone są od siebie TABS aby umożliwić użycie spacji w poleceniu
pola.

Jeśli plik, o którym mowa w specyfikacje Nie można uzyskać dostępu do zmiennej konfiguracyjnej
z jakiegokolwiek powodu domyślny wpis jest na stałe podłączony do agenta pocztowego (wie o obu kompresować
oraz gzip programy):

Kompresja .Z Kompresja rozpakować zcat
gzip .gz gzip pistoletzip gunzip -c

Jeśli chcesz dodać więcej kompresorów, możesz skopiować plik domyślny sprężarki plik z
katalog prywatnej biblioteki mailagenta i skonfiguruj poprawny wpis dla swojego zastępcy
kompresor. Należy pamiętać, że rozszerzenie końcowe musi być unikalne wśród wszystkich
wymienione programy, ponieważ to rozszerzenie służy do określenia rodzaju kompresji
wykonane na folderze.

Jeśli folder zostanie utworzony bez istniejącej skompresowanej formy, zostanie zastosowany domyślny kompresor
jest wybrany dla Ciebie, zgodnie z definicją zawartą w kompakt zmienna konfiguracyjna. Odnosi się to do
nazwa znacznika specyfikacje plik, czyli pierwsze słowo w linii (zwykle jest to nazwa pliku
program do kompresji, ale niekoniecznie).

Podczas próby doręczenia listonosz sprawdzi nazwę folderu na liście
wzorce w pliku skompresowanym. Jeśli istnieje dopasowanie, folder jest oznaczany jako skompresowany.
Następnie mailagent podejmuje próbę dekompresji, jeśli istnieje już skompresowany formularz (tj. plik
ma rozpoznane rozszerzenie nazwy pliku) i jeśli nie ma żadnej nieskompresowanej postaci. Dostawa jest
następnie przeniesiony do nieskompresowanego folderu. Jednakże ponowna kompresja nie jest wykonywana natychmiast,
ponieważ nadal możliwe jest pobieranie wiadomości do tego folderu w ramach jednej partii.
Jeżeli miejsce na dysku stanie się tak ciasne, że dekompresja innych folderów będzie niemożliwa,
mailagent ponownie skompresuje foldery, które już rozpakował. W przeciwnym razie czeka
do ostatniej chwili.

Jeśli z jakiegoś powodu istnieje skompresowany folder, którego nie można rozpakować, mailagent
dostarczy pocztę do zwykłego folderu. Nastąpi dalsze dostarczanie do tego folderu
zarówno ze skompresowaną, jak i zwykłą wersją folderu, co spowoduje wyświetlenie ostrzeżenia
w pliku dziennika, ale dostarczenie nastąpi automatycznie do zwykłego pliku.

W nowo utworzonych folderach plik kompakt Zmienna konfiguracyjna służy do określenia
typ kompresji, który ma zostać użyty dla folderu.

MAIL PRZEBIEGANIE


Jeśli odbierasz i przetwarzasz pocztę na własnym komputerze, masz dostęp do
lokalna poczta sprawdza gdzie agent pocztowy może ostrzegać Cię o nowych wiadomościach i informować o nich
gdzie zostały zapisane, drukując mały podzbiór nagłówka i kilka pierwszych linii
cielesny.

Aby skorzystać z biffowania, wystarczy ustawić kilka parametrów biff w pliku
~/.agent pocztowy i upewnij się szturchaniec jest ustawiony na WŁ. Właściwie jest to jedyny parametr, który możesz ustawić
należy ustawić, aby uzyskać minimalne domyślne zachowanie biffowania. Nie zapomnij uruchomić powłoki
Komenda "szturchaniec y" na terminalach, na których chcesz otrzymywać powiadomienia (możesz to zrobić na
kilka terminali, po jednym dla każdego wirtualnego wyświetlacza).

Po odebraniu poczty i zapisaniu jej w folderze lub wysłaniu do grupy dyskusyjnej, agent pocztowy lokalizuje
wszystkie tty, na których jesteś zalogowany, a następnie wybiera te, w których zażądano biffowania,
w końcu wyemituje wiadomość i wyemituje sygnał dźwiękowy (jeśli twój terminal to obsługuje i
używasz standardowego formatu — patrz poniżej).

Dostosowywanie Biffowanie Wydajność
Jeśli domyślny format nie odpowiada Twoim potrzebom, możesz dostosować wiadomość biffującą
swobodnie, ustawiając biffmsg parametr wskazujący plik, w którym przechowywany jest format.
W Twojej wiadomości zostaną wykonane standardowe podstawienia makr, następujący zestaw makr
zastąpienie i uzupełnienie zestawu standardowego:

%-A To samo, co przy pisaniu %-H, nowa linia, %-B
%-B Część treści wiadomości biffującej, z usuniętym kodowaniem przesyłania treści.
Jeśli wiadomość jest wieloczęściowa MIME, wyświetlana jest część tekstowa/zwykła. Jeśli tylko A
dostępna jest część tekstowa/html, znaczniki HTML są usuwane w celu porównywania.
%-H Część nagłówka wiadomości biffującej. Jeśli pokazuje tylko Od:, Do: Temat: i
Data: nagłówki lub cokolwiek ustawiłeś dwugłowy zmienna konfiguracyjna do.
Wszystkie nagłówki są wyświetlane jako jedna linia tekstu, niezależnie od ich rzeczywistej długości.
Na końcu pojawią się trzy kropki sygnalizujące, że nastąpiło obcięcie.
W przypadku artykułu prasowego (przeglądanie po POST -b) pola Do: i DW: nigdy nie są wyświetlane
pokazane, nawet jeśli zostało to określone w dwugłowy.
%-T To samo co %-B, ale przycinanie jest włączone. Celem przycinania jest usunięcie wszelkich
wiodący cytat w wiadomości, aby uzyskać tylko najbardziej znaczącą część. Ten
zakłada, że ​​znak cytowania jest pojedynczym znakiem innym niż alfanumeryczny. The
można również usunąć wiodącą linię atrybucyjną mogącą wprowadzić cytat,
a minimalną długość oferty można ustawić w pliku konfiguracyjnym.
%B Ścieżka względna w %d folderu wiadomości, pełna ścieżka (%p), jeśli nie została zapisana
pod tym katalogiem. Nazwa grupy dyskusyjnej dla artykułów prasowych.
%D Katalog, w którym przechowywana jest wiadomość. Jeśli jest to folder MH, jest to folder
Pełna ścieżka. Katalog domowy zostaje zastąpiony przez ~. Puste dla artykułów prasowych.
%F Nazwa podstawowa (ostatni składnik ścieżki) wiadomości. W przypadku wiadomości MH jest to:
numer wiadomości. Puste dla artykułów prasowych.
%P Ścieżka folderu. Ma poprawną semantykę dla folderów MH i katalogów, tj
wskazuje na sam katalog folderów. W przeciwnym razie to samo co %p.
%a Znaki alarmowe (^G). Może rozszerzyć się na więcej niż jeden pod kontrolą
Polecenie filtrowania sygnału dźwiękowego. Użyj %b, jeśli chcesz mieć tylko jeden dzwonek.
%b Znak dźwiękowy (^G). W przeciwieństwie do %a, rozwija się to tylko w celu dawania pierwszej dzwonek.
%d Pełna ścieżka, w której przechowywane są foldery takie jak ten, w którym zapisywany jest plik, jeśli nie
kwalifikowany (tj. ścieżka MH dla folderów MH, coś w stylu ~/Poczta dla innych
lornetka składana). Puste dla artykułów prasowych.
%f Folder, w którym zapisano pocztę, w skrócie home zastąpiony przez ~. Grupa dyskusyjna kiedy
artykuł został opublikowany w celach informacyjnych.
%m Znak '+' jeśli folder jest MH, w przeciwnym razie pusty.
%p Pełna nazwa ścieżki (taka sama jak %f) wiadomości, ale bez żadnego skrótu ~. The
nazwa grupy dyskusyjnej dla artykułów prasowych.
%t Typ wiadomości: zwykle „poczta”, ale ustawiona na „artykuł” w celu sprawdzenia po
polecenie POST.

Możesz uzyskać standardowe rozwinięcie makra, używając %:F na przykład od %f makro jest
zastąpiony. The %: formularz pozwala i tak uzyskać standardową definicję makra, bez względu na to
co, żeby nie trzeba było pamiętać, czy dane makro jest w tym kontekście zastąpione czy
nie. Poza tym jest to bezpieczniejsze, ponieważ nowe makra mogą być tu dodawane bez uprzedzenia. Zauważ to
wszystkie makra związane z treścią wiadomości zaczynają się od %- i dlatego nie są ze sobą sprzeczne
ze standardowym.

Oto format, którego należy użyć, aby uzyskać takie samo zachowanie jak w przypadku domyślnego połączenia przewodowego
format:

%b
Nowy %t dla %u przybył do %f:
----
%-A
----%B

Należy pamiętać, że ciąg ...jeszcze... pojawia się na końcu ciała, gdy go nie było
całkowicie wydrukowany na ekranie, a pozostałe linie nie są puste ani podobne.

Lamówka Lider Cytat
Standardową praktyką w odpowiedzi na wiadomość jest załączenie fragmentu wiadomości
zdania, na które udzielana jest odpowiedź, z użyciem przedrostka znaku innego niż alfanumeryczny, takiego jak „>”.
cytowane linie. Coś jak:

Cytuję Johna Doe:
> To jest cytowany materiał.
> Kolejna linia z poczty Johna.

To jest część odpowiedzi dla Johna.

Wiodący wiersz „Cytując…”, tzw atrybucja linia, jest opcjonalna i może być
brakuje lub przyjąć inną, bezpłatną formę.

Jednak podczas biffowania może to być postrzegane jako bezużyteczny hałas, szczególnie obecnie, gdy ludzie
swobodnie cytują coraz więcej w swoich odpowiedziach. Ponieważ wiadomość biff pokazuje tylko górę
wierszy wiadomości, pożądane może być automatyczne przycięcie tych wierszy.

Via %-T makra w dostosowanym formacie biff, możesz poprosić o przycięcie wiodących
cytat, zachowując linię przypisania lub nie, a nawet zastąpić przycięty materiał
z powiadomieniem, że usunięto tak wiele linii.

Całe to dostosowywanie odbywa się z poziomu ~/.agent pocztowy plik konfiguracyjny, używając
bifftrim, bifftrlen oraz biffcytat zmiennych.

Najpierw musisz włączyć przycinanie, używając niestandardowego formatu biff za pomocą %-T makro.
Przez ustawienie bifftrlen do 3, możesz zażądać, aby cytowane były tylko co najmniej 3 wiersze
przycięty. Obrócenie bifftrim wyłączenie spowoduje usunięcie powiadomienia o przycinaniu podczas obracania
biffcytat off spowoduje również usunięcie linii przypisania, jeśli jest obecna.

Na przykład, zakładając następujące ustawienia:

bifftrim: WŁ
bifftrlen: 2
cytat: WYŁ

wówczas powyższy przykład wygeneruje następujący wynik biffowania (nagłówek komunikatu
bez względu na to):

[przycięto 3 linie zaczynające się od znaku „>” i linii przypisania]
To jest część odpowiedzi dla Johna.

ponieważ pusta linia po cytowanym materiale jest liczona jako część
cytat. Komunikat „[trimmed ..]” można wyłączyć, ustawiając bifftrim Wyłączyć.

Algorytm przycinania uwzględnia pierwszą linię treści, aby sprawdzić, czy zaczyna się od a
znak inny niż alfanumeryczny. Jeśli tak, wszystkie następne wiersze zaczynają się od tego
ten sam znak lub usunięto dowolną pustą linię aż do pierwszej niepustej linii rozpoczynającej się od
inna postać. Opcjonalnie pierwsza linia (i tylko ta linia) jest pomijana, jeśli
drugi zaczyna się od znaku innego niż alfanumeryczny, a pierwszy wiersz jest brany pod uwagę
linia atrybucji.

Korzystanie z Kompaktowy W stylu MH Biffowanie
Tzw W stylu MH biffing to sposób na zaprezentowanie zwartej bryły, w której wszystkie linie są widoczne
są połączone w duży szczęśliwy ciąg, którego kolejne spacje zamieniają się w jeden
znak kosmiczny. Aby to włączyć, musisz ustawić buffmh zmienna na ON.

Ponieważ to zagęszczenie jest wyprowadzane dosłownie na tty, podziały wierszy będą następować losowo i
może to utrudniać czytanie. Możesz poprosić o automatyczne ponowne formatowanie pliku
zagęszczony korpus poprzez obracanie biffnice na ON, a wyjście biff będzie dobrze pasować do
terminal.

Niestety nie ma możliwości dostosowania ilości kolumn, które mają zostać użyte
do formatowania: ponieważ możesz biffować do dowolnego tty, na którym jesteś zalogowany, byłoby to wymuszone
agent pocztowy sondować tty pod kątem rozmiaru kolumny dla każdego możliwego tty, do którego może trafić wyjście,
i nie ma na to niezawodnego, przenośnego sposobu. Przepraszam.

ROZSUWALNY FILTRACJA POLECENIA


Gdy już dotrzesz do ekspert poziomie i pod warunkiem, że posiadasz odpowiednią wiedzę nt Perl, Ty
może odczuwać potrzebę bardziej zaawansowanych poleceń, które nie są częścią standardowego zestawu. Ten
sekcja wyjaśnia, jak można to osiągnąć dynamicznie, bez konieczności głębokiego nurkowania
wewnątrz kodu źródłowego.

Po rozszerzeniu zestawu poleceń filtrujących możesz używać tych poleceń w pliku
reguł, tak jakby były wbudowane. Możesz nawet zdecydować się na przedefiniowanie standardowych poleceń
jeśli Ci nie odpowiadają (jednak jeśli chcesz to zrobić, powinieneś dokładnie wiedzieć, czego potrzebujesz
co robisz, możesz zacząć tracić część poczty lub uzyskać nieoczekiwane zachowanie - to także
tracisz gwarancję :-).

Możliwość dostarczania poleceń zewnętrznych bez faktycznej modyfikacji głównego kodu źródłowego
jest, jak sądzę, mocnym argumentem przemawiającym za napisaniem programu w wersji interpretowanej
język jak Perl. Dzieje się tak oczywiście po przekonaniu samego siebie, że jest to Dobro
Rzecz w dostosowaniu i rozszerzeniu programu w tym samym języku, w jakim jest używany rdzeń,
co oznacza zwykle język dość niskiego poziomu z mniejszą liczbą przyjaznych dla użytkownika haków.

Omówienie
Aby zaimplementować nowe polecenie, powiedz FOLD, musisz wykonać następujące czynności:

· Napisz podprogram Perla realizujący akcję FOLD i umieść go w programie zewnętrznym
plik. Powiedzmy, że piszemy podprogram zagiąć i przechowujemy to w a zwiń.pl plik. To jest
oczywiście trudna część, o której musisz wiedzieć kilka podstawowych rzeczy
wewnętrzne elementy poczty.

· Wybierz, gdzie chcesz przechowywać swoje zwiń.pl plik. Następnie sprawdź składnię za pomocą Perl -c,
tak dla pewności...

· Edytuj nowy cmd plik (podany w pliku konfiguracyjnym), aby zapisać nowe polecenie.
Następnie upewnij się, że ten plik jest ściśle chroniony. Musisz to posiadać, a nie powinno tak być
zapisywana przez dowolną inną osobę oprócz Ciebie.

· Dodatkowo możesz określić, czy FOLD ma modyfikować istniejące
status wykonania i czy będzie to dozwolone w ramach specjalnego _SEEN_
stan.

· Napisz kilka reguł, używając nowego polecenia FOLD. To jest łatwo część! Pamiętaj, że Twoje
polecenie może być również używane w hakach Perla, tak jakby było poleceniem wbudowanym (this
oznacza, że ​​w programie została zbudowana dla Ciebie funkcja interfejsu hak pocztowy pakiet).

W poniższych sekcjach opiszemy składnię metody nowy cmd plik i
następnie przedstawimy kilka zmiennych wewnętrznych niskiego poziomu, które można wykorzystać podczas wdrażania
nowe polecenia.

Nowości Command filet Format:
nowy cmd plik składa się z szeregu linii, z których każda opisuje jedno polecenie. Pusty
linie są ignorowane, podobnie jak komentarze w stylu powłoki wprowadzone ostrym znakiem (#).
dozwolone.

Każda linia składa się z 3 pól głównych i 2 opcjonalnych; pola są oddzielone przez
spacje lub tabulatory. Oto szkielet:



nazwa_cmd to nazwa polecenia, które chcesz dodać. W naszym poprzednim przykładzie tak
być ZŁOŻONE. Kolejne pole, ścieżka, informuje agenta pocztowego, gdzie znajduje się plik zawierający polecenie
zlokalizowana jest realizacja. Powiedzmy, że przechowujemy to w ~/mail/cmds/fold.pl, funkcjonować pole jest
Nazwa Perl funkcję implementującą FOLD, którą można znaleźć w zwiń.pl. Tutaj my
nazwaliśmy naszą funkcję zagiąć. Zauważ, że jeśli twoja funkcja ma swoją nazwę w nowy cmd
package, co jest zachowaniem domyślnym, jeśli żadnego nie określisz, nie ma takiej potrzeby
poprzedź nazwę funkcji pakietem. W przeciwnym razie należy użyć w pełni kwalifikowanej nazwy.

Ostatnie dwa pola są opcjonalne i są wartościami logicznymi, które można określić za pomocą prawdziwy or
tak wyrazić prawdę i fałszywy or Nie wyrazić kłamstwo. Jeśli flaga_stanu jest ustawiony na true,
wówczas polecenie zmodyfikuje ostatnią zmienną statusu wykonania. Jeśli widziana_flaga jest prawdziwy,
wówczas polecenie może zostać użyte, gdy filtr znajduje się w stanie _SEEN_. Wartości domyślne to
odpowiednio prawdziwy oraz fałszywy.

Zatem w naszym przykładzie napisalibyśmy:

ZAGIĘCIE ~/mail/cmds/fold.pl złóż nie tak

aby zezwolić na FOLD nawet w stanie _SEEN_ i wykonać go bez modyfikowania bieżącego
wartość status ostatniego polecenia zmienna.

Pisanie An Wdrożenie
Twoja funkcja Perla zostanie w razie potrzeby załadowana do specjalnego pakietu nowy cmd, więc to jest
własna przestrzeń nazw jest chroniona i nie powoduje przypadkowego konfliktu z innym agentem pocztowym
procedury lub zmienne. Kiedy musisz wywołać interfejs Perla jakiegoś popularnego agenta pocztowego
funkcji, będziesz musiał pamiętać, aby na przykład użyć w pełni kwalifikowanej nazwy procedury
&mailhook'opuść aby faktycznie wykonać polecenie WYJDŹ.

(Zwykle w hakach PERL nie ma potrzeby stosowania tego przedrostka, ponieważ skrypt Perla to
załadowany w hak pocztowy pakiet. Kiedy rozszerzasz swojego agenta pocztowego, powinieneś być ekstra
bądź jednak ostrożny i naprawdę nie zaszkodzi użyć tego przedrostka. Możesz swobodnie korzystać
perł pakiet dyrektywę w swojej funkcji, a zatem przełączanie na hak pocztowy pakiet
w treści procedury, ale pozostawiając jej nazwę w nowy cmd pakiet.)

Ponieważ mailagent będzie dynamicznie ładować implementację twojego polecenia za pierwszym razem
zostanie uruchomiony, sugeruję, ładując określony skrypt Perla do pamięci i oceniając go
umieść każdą implementację polecenia w oddzielnym pliku, aby uniknąć przechowywania potencjalnie niepotrzebnego
kod w pamięci.

Każde polecenie wywoływane jest z jednym argumentem, mianowicie pełnym ciągiem poleceń odczytanym z pliku
reguły filtrowania. Dodatkowo spec @agawa array jest ustawiana poprzez wykonanie stylu powłoki
analizowanie wiersza poleceń (co nie powiedzie się, jeśli cudzysłowy są niedopasowane, ale wtedy możesz to zrobić
parsowanie samodzielnie, odkąd pojawi się wiersz poleceń). Na koniec swojej rutyny, ty
musi zwrócić status awarii, tj 0 za sukces i 1 sygnalizować awarię.

To są Twoje jedyne wymagania. W ramach rutyny możesz robić, co chcesz.
Aby jednak ułatwić Ci zadanie, niektóre zmienne są wstępnie obliczone, te same, które są
udostępniane w hakach pocztowych, tylko one są zdefiniowane w pliku nowy cmd zapakuj to
czas. Istnieje również kilka specjalnych zmiennych, o których musisz wiedzieć, oraz zestaw
standardowe procedury, które możesz chcieć wywołać. Proszę unikać wywoływania czegoś, co nie jest
udokumentowane w tym miejscu, ponieważ mogą ulec zmianie bez wcześniejszego powiadomienia. Jeśli chcesz z jednego skorzystać
rutynowe i nie jest udokumentowane na tej stronie podręcznika, proszę dać mi znać.

Każde polecenie jest wywoływane z poziomu pliku eval skonstruować, abyś mógł bezpiecznie używać umierać lub zadzwoń
zewnętrzne procedury biblioteczne, które używają umierać. Jeśli użyjesz wymagać, pamiętaj, że jest to agent pocztowy
założenie specjalnego @INC array, umieszczając najpierw ścieżkę jej prywatnej biblioteki, więc możesz
umieść wszystkie swoje agent pocztowy-powiązane pliki bibliotek w tym miejscu.

Specjalny Zmienne
Następujące zmienne specjalne (niektóre z nich są oznaczone jako tylko do odczytu, co oznacza, że ​​nie powinieneś
modyfikować je, a w rzeczywistości nie można) udostępniane bezpośrednio w pliku nowy cmd pakiet, są
zadanych przez automat filtrujący i służą do sterowania procesem filtrowania:

$mplik Podstawowa nazwa przetwarzanego pliku poczty. Ta zmienna jest tylko do odczytu.
Używa się go głównie w komunikatach dziennika, jak w [$mfile] do oznaczania każdego dziennika, ponieważ a
pojedynczy proces agenta pocztowego może obsługiwać wiele wiadomości.

$ kiedykolwiek_zaoszczędzony To jest wartość logiczna, która powinna być zestaw do 1 raz udane oszczędzanie
operacja została zakończona. Jeśli na końcu filtrowania ta zmienna
jest nadal 0, wówczas zostanie wykonane domyślne polecenie LEAVE.

$folder_zapisano Wartość tej zmiennej reguluje $msgpath wygodny zestaw zmiennych
dla ucieczek PERL. Jest aktualizowany za każdym razem, gdy wiadomość jest zapisywana w pliku, do
przechowuj ścieżkę zapisanego pliku.

$ciąg dalszy Jest to status kontynuacji, zmienna o najwyższym znaczeniu, kiedy
radzenia sobie z przepływem kontroli. Cztery stałe z główny pakiet może być
używany do określenia, czy powinniśmy kontynuować obecną regułę
($FT_CONT), porzuć bieżącą regułę ($FT_REJECT), zrestartuj filtrowanie od
początek ($FT_RESTART) lub po prostu przerwij przetwarzanie ($FT_ABORT). Więcej na
to później.

$lastcmd Ostatni stan awarii zarejestrowany przez ostatnie polecenie (wśród tych, które to robią
zmienić status wykonania). Nie powinieneś musieć tego aktualizować
siebie, chyba że implementujesz jakąś enkapsulację dla innych poleceń,
jak WSTECZ lub RAZ, ponieważ domyślnie $lastcmd zostanie ustawiona na Twoją wartość
return na końcu polecenia.

$wtryb Rejestruje to bieżący stan automatu filtrującego (tryb pracy) w a
dosłowna forma ciągu, zwykle modyfikowana poleceniem BEGIN lub jako strona
efekt, jak na przykład w przypadku REJECT.

Wszystkie specjalne zmienne skonfigurowane dla ucieczek PERL są również instalowane w pliku nowy cmd
pakiet. To są $ login, %nagłówekitp. Możesz je przeglądać do woli.

Inne zmienne, których możesz potrzebować, to parametry konfiguracyjne przechowywane w pliku
~/.agent pocztowy plik konfiguracyjny. Cóż, zasada jest prosta. Wartość każdego parametru
moje pieniądze z pliku konfiguracyjnego jest przechowywany w zmiennej $cf'param. Zmienna $main'loglvl is
kopia Poziom $cf, ponieważ wpisanie jest zawsze krótsze $'loglvl po każdym wywołaniu
procedura logowania &dodaj_log.

Jest jeszcze jedna zmienna, o której warto wiedzieć: $main'FILTR, co jest odpowiednim X-
Linia filtra, która powinna zostać dołączona cała kolekcja pocztę, którą wysyłasz za pośrednictwem agenta pocztowego, w celu
unikaj pętli. Również podczas zapisywania wiadomości e-mail w folderze mądrze jest dodać tę linię na wypadek, gdyby a
pojawia się problem: możesz wtedy zidentyfikować winowajcę.

Zasada Środowisko
Działanie może mieć uzasadnioną chęć zmiany środowiska w jednym zakresie
tylko reguła, powrót do poprzedniej wartości po wyjściu z reguły. A może chcesz
zmienić wartość na zawsze.

Kiedy mówimy o zmianie środowiska, mamy na myśli to, które zostało utworzone za pośrednictwem
plik konfiguracyjny, którego wartości kończą się w pliku cf pakiet. Cóż, niektóre z tych zmiennych
są kopiowane w env pakiet przed rozpoczęciem filtrowania wiadomości (pod kontrolą
dotychczasowy @env'Env szyk).

Wszystkie reguły powinny wówczas odnosić się do wersji w pliku env pakiecie, a nie w pliku cf Pakiet,
aby zobaczyć zmiany. Zmiany globalne wprowadza się poprzez bezpośredni wpływ na zmienną w pliku
env pakiet, natomiast lokalne zmiany są wymagane poprzez wywołanie metody &środowiskolokalne rutyna.

Na przykład, cf'umask wartość jest kopiowana jako env'umask bo umaska jest trzymany @env'Env.
Zmiany globalne wprowadza się poprzez bezpośrednie ustawienie tej kopii, natomiast zmiany lokalne można wprowadzać
z:

&env'local('umask', 0722);

aby ustawić nową wartość lokalną. Pierwszy raz &środowiskolokalne jest wywoływana na zmiennej, jej wartości
jest gdzieś zapisany i zostanie przywrócony po wyjściu z zakresu reguły. Potem nowe
wartość ma wpływ na zmienną.

Zmienne wymagające efektu ubocznego przy zmianie wartości (takie jak zmienna umask,
co wymaga wywołania systemowego, aby jądro zobaczyło zmianę) może określić to, uzyskując dostęp
dotychczasowy %env'Spec tablica, kluczem jest nazwa zmiennej wymagającej efektu ubocznego, the
wartość interpretowana jest jako fragment kodu Perla uruchamiany po przywróceniu oryginalnej wartości. Dla
na przykład, mówimy gdzieś (w &env'init):

pakiet env;
$Spec{'umask'} = 'umask($umask)';

aby zaktualizować widok jądra przy opuszczaniu zakresu. Należy pamiętać, że efekt uboczny jest oceniany jednorazowo
zmienna odzyskała swoją pierwotną wartość, a w obrębie env pakiet.

Wewnętrznie &analizuj_pocztę rutynowe telefony Konfiguracja &środowiska przed rozpoczęciem przetwarzania
zainicjować env pakiet i &oczyszczanie środowiska na koniec przed powrotem. Przed biegiem
działania określone w dopasowaniu reguły, &zastosuj_rules Połączenia &przywróć środowisko zapewnić
spójny widok otoczenia podczas wykonywania działań dla tej konkretnej reguły.

Zmieniam Control: Przepływ
Jeśli chcesz zmienić przepływ sterowania, aby wykonać ODRZUCENIE, PONOWNE URUCHOMIENIE lub PRZERWIENIE, musisz to zrobić
trzy możliwości. Jeśli chcesz kontrolować tę akcję za pomocą opcji, w taki sam sposób, jak w przypadku standardu
UNIQUE robi (z -c, -r or -a), możesz zadzwonić &main'alter_execution(opcja, państwo) dający
to dwa parametry: litera opcji i stan, na który chcesz się zmienić przed zmianą
przepływ sterowania.

Możesz także bezpośrednio zmienić plik $wtryb oraz $ciąg dalszy zmiennych, ale wtedy będziesz miał
zrobić własne rejestrowanie, jeśli chcesz. Możesz też wywołać procedury niskiego poziomu
&main'do_reject, &main'do_restart oraz &główne'do_przerwania wykonać odpowiednie
operacji (z logowaniem).

Pamiętaj, że stan _SEEN_ jest wyjątkowy i obsługiwany bezpośrednio na poziomie filtra, oraz
filtr rozpoczyna się w stanie INITIAL. Domyślną akcją jest kontynuacja bieżącego
reguły, dlatego nie ma rutyny wykonywania tego zadania.

Preferowanym sposobem jest wywołanie metody hak pocztowy funkcje interfejsu, &mailhook'begin,
&mailhook'odrzućitp., i to zadziała, nawet jeśli przedefiniujesz te funkcje
się. Poza tym to jedyny interfejs, który prawdopodobnie nie zostanie zmieniony przez nowy
wersje.

Ogólne Cel procedury
Poniżej znajduje się lista wszystkich ogólnych układów, które możesz chcieć wywołać podczas występu
niektóre zadania niskiego poziomu. Należy pamiętać, że te informacje zależą od wersji. Ponieważ dokumentuję
postaram się zachować je w nowych wersjach, ale nie mogę zagwarantować, że nie będę musiał
nieznacznie zmienić część ich semantyki. Jest duża szansa, że ​​nigdy nie będziesz musiał
w każdym razie się tym martw.

&header'format(pole RFC822)
Zwróć sformatowane pole RFC822 tak, aby zmieściło się w 78 kolumnach, z odpowiednimi kontynuacjami
wprowadzone ośmioma spacjami.

&header'normalize(rfc822-nazwa-nagłówka)
Normalizuj wielkość liter w nagłówku RFC822 i zwracaj nową nazwę nagłówka za każdym razem
wielka litera.

&nagłówek'resetuj
Jest to część sprawdzania nagłówka RFC822, używana głównie podczas dzielenia pliku a
strawić. Spowoduje to zresetowanie automatu rozpoznawania (zobacz &header'valid).

&nagłówek'valid(linia)
Zwraca status logiczny, wskazujący, czy wszystkie linie podane do tej pory do tego
funkcja od ostatniej &nagłówek'resetuj są częścią prawidłowego nagłówka RFC822. The
funkcja rozumie pierwszą linię From, która jest częścią wiadomości UNIX. W każdym razie
czas, zmienna $header'może można sprawdzić, czy do tej pory znaleźliśmy
co najmniej jedno istotne pole nagłówka poczty.

&main'acs_rqst(plik)
Wykonaj blokadę .lock na pliku, zwracając 0 w przypadku powodzenia i -1 w przypadku niepowodzenia.
Jeżeli był obecny stary zamek, zostanie on usunięty (limit czasowy ustawiony na jedną godzinę). Używać
&główny'bezpłatny_plik aby zwolnić blokadę.

&main'add_log(ciąg)
Dodaj ciąg do pliku dziennika. Zwykłym idiomem jest dodawanie tego wywołania za pomocą
if $'loglvl > wartość, Gdzie wartość to poziom rejestrowania, który chcesz mieć wcześniej
emitowanie tego rodzaju dziennika ($'loglvl jest krótką formą dla $main'loglvl).

&main'free_file(plik)
Usuń blokadę pliku uzyskanego przez &main'acs_rqst. Zwraca 0, jeśli blokada
został pomyślnie usunięty, -1, jeśli był to nieaktualny zamek (otrzymany przez kogoś innego).

&main'header_found(plik)
Zeskanuj nagłówek pliku i spróbuj ustalić, czy pod adresem znajduje się nagłówek poczty
początek, czy nie. Zwróć wartość true, jeśli znaleziono nagłówek.

&main'history_record
Zapisz identyfikator bieżącej wiadomości i zwróć 0, jeśli wiadomość nie miała
był już wcześniej widziany, 1, jeśli jest duplikatem.

&główna'nazwa hosta
Zwraca wartość nazwy hosta pisaną małymi literami z dołączoną możliwą nazwą domeny
do tego. Nazwa hosta jest przechowywana w pamięci podręcznej, ponieważ jej wartość należy początkowo uzyskać przez
rozwidlenie. (Zobacz też &main'nazwa_hosta)

&main'internet_info(adres e-mail)
Przeanalizuj internetowy adres e-mail i zwróć trzyelementową tablicę zawierającą
host, domena i część krajowa hosta internetowego. Na przykład, jeśli
adres to [email chroniony], powróci (C, b, a).

&main'nazwa_logowania(adres e-mail)
Przeanalizuj internetowy adres e-mail i zwróć nazwę logowania.

&main'macros_subst(*linia)
Wykonaj podstawienie makra w miejscu (linia przekazana jako glob typu) za pomocą metody
informacje aktualnie przechowywane w %main'Nagłówek szyk. Do nie przechodzić *_ jak
parametr, ponieważ wewnętrznie makra_subst używa zmiennej lokalnej o tej nazwie
aby wykonać podstawienia, a otrzymasz niezmodyfikowaną wersję. Jeśli
naprawdę chcesz przejść *_, musisz użyć zwróconej wartości z
makra_subst który jest tekstem podstawionym, ale jest mniej wydajny niż
zmodyfikowanie go na miejscu.

&main'madeir(nazwa ścieżki, tryb)
Utwórz katalog, tworząc wszystkie katalogi pośrednie potrzebne do utworzenia
nazwa ścieżki prawidłowy katalog. Nie ma żadnego efektu, jeśli katalog już istnieje. The
Parametr mode jest opcjonalny, jeśli nie został określony, zostanie użyte 0700 (liczba ósemkowa).

&main'nazwa_hosta
Zwraca nazwę hosta bieżącego komputera, bez nazwy domeny. The
nazwa_hosta jest buforowana, ponieważ jej wartość należy początkowo uzyskać poprzez rozwidlenie.

&main'run_command(polecenie-filtru)
Wykonaj określone polecenie pojedynczego filtru i zwróć status kontynuacji,
które normalnie powinny mieć wpływ na $ciąg dalszy zmienny. Będziesz tego potrzebować
rutyna podczas próby implementacji poleceń, które hermetyzują inne polecenia, np
RAZ lub WYBIERZ.

&main'sekundy_w_okresie(kropka)
Zwraca liczbę sekund w określonym okresie. Patrz sekcja Określanie A
Okres aby uzyskać prawidłowe ciągi kropek.

&main'shell_command(program, Wejście, informacja zwrotna)
Uruchom polecenie powłoki i zwróć status błędu (0 dla OK). Parametr wejściowy
może być jedną z następujących stałych (zdefiniowanych w pliku główny pakiet): $NO_INPUT
aby zamknąć standardowe wejście, $BODY_INPUT potokować treść bieżącej wiadomości,
$MAIL_INPUT, aby przesłać całą pocztę w niezmienionej postaci, $MAIL_INPUT_BINARY, aby przesłać całość
mail po usunięciu wszelkich kodowań przesyłania treści i $HEADER_INPUT do
popisz nagłówek wiadomości. Parametr sprzężenia zwrotnego może mieć wartość $FEEDBACK lub
$NO_FEEDBACK w zależności od tego, czy chcesz używać standardowego wyjścia
zmienić odpowiednią część wiadomości. Jeśli nie jest wymagana żadna informacja zwrotna,
Dane wyjściowe polecenia są wysyłane z powrotem do użytkownika. Wartość $FEEDBACK_ENCODING wynosi
traktowane jak $FEEDBACK, ale poinformuje agenta pocztowego, aby sprawdził najbardziej odpowiednią treść
kodowanie, gdy danymi wejściowymi jest cała wiadomość.

&main'parse_address(adres-rfc822)
Przeanalizuj adres e-mail zgodny z RFC822 i zwróć dwuelementową tablicę zawierającą
adres internetowy i część komentarza tego adresu.

&main'xeqte(akcje filtrów)
Wykonaj serię akcji oddzielonych znakiem „;” postać, dzwonienie Uruchom polecenie
aby faktycznie wykonać tę pracę. Zwróć status kontynuacji. Zauważ to
$FT_ABORT będzie nigdy zostać zwrócone, ponieważ listonosz zwykle zatrzymuje się po otrzymaniu
wykonał jeden zestaw akcji, kontynuując tylko, jeśli zobaczył RESTART lub ODRZUT.
To, co robi ABORT, to pomijanie pozostałych poleceń w linii i wychodzenie tak, jak gdyby
wszystkie polecenia zostały wykonane. Można powiedzieć xeqte jest odpowiednikiem eval
funkcja w Perlu, ponieważ interpretuje mały skrypt filtrujący i zwraca kontrolę
do wywołującego po zakończeniu, a ABORT należy do Perla umierać.

Możesz także użyć trzech funkcji z zewnętrzny pakiet, który manipuluje trwałymi
zmienne (już udokumentowane w sekcji poświęconej zmiennym), a także użytkownik-
zdefiniowane procedury makro.

Przykład
Pisanie własnych poleceń nie jest łatwe, ponieważ wymaga podstawowej wiedzy nt
wewnętrzne elementy poczty. Jednak gdy już się z tym zapoznasz, powinno to być względne
bezpośredni.

Oto mały przykład. Chcemy napisać polecenie odbijające wiadomość e-mail do
pierwotnego nadawcy, tak jak robi to sendmail, z początkowym tekstem wyjaśniającym, co się stało.
Polecenie będzie miało następującą składnię:

ODEŚLIJ powód

i chcielibyśmy, aby to polecenie zmodyfikowało istniejący status, zwracając błąd, jeśli
poczta nie może zostać odesłana. Ponieważ to polecenie faktycznie wysyła coś z powrotem, my tego nie robimy
chcesz, aby został wykonany w stanie _SEEN_. Oto moja implementacja (nieprzetestowana):

sub-odesłanie {
lokalny($cmd_line) = @_;
local($powód) = dołącz(' ', @ARGV[1..$#ARGV]);
chyba że (open(MAILER, "|/usr/lib/sendmail -odq -t")) {
&'add_log("BŁĄD nie można uruchomić sendmaila w celu wysłania wiadomości")
jeśli $'loglvl;
1 wrócić;
}
drukuj MAILER <
Od: listonosz
Do: $header{'Nadawca'}
Temat: Zwrócona poczta: Awaria agenta pocztowego
$main'FILTR

--- Zapis sesji

$powód

--- Następuje niewysłana wiadomość

$nagłówek{'Wszystkie'}
EOF
zamknij POCZTĘ;
$ kiedykolwiek_zapisany = 1; # Nie chcę tego w skrzynce pocztowej
$? == 0? 0: 1; # Stan awarii
}

Zakładając, że to polecenie zostanie wprowadzone ~/mail/cmds/sendback.pl, linia opisująca to w
nowy cmd plik byłby:

ODEŚLIJ ~/mail/cmds/sendback.pl odesłanie tak nie

Teraz tego polecenia można swobodnie używać w dowolnej regule i będzie ono rejestrowane jako polecenie zdefiniowane przez użytkownika
polecenie wydane przez dyspozytora dowodzenia. Kto powiedział, że nie jest to łatwe? :-)

Zwróć uwagę na użycie zmiennej $ever_saved do oznaczenia wiadomości jako zapisanej
odbił się. Rzeczywiście, gdyby akcja SENDBACK była jedyną akcją do wykonania, nie robimy tego
chcesz, aby agent pocztowy POZOSTAWIŁ pocztę w skrzynce pocztowej, ponieważ nigdy nie została zapisana (this
domyślne zachowanie jest jedynie środkiem ostrożności – lepiej dmuchać na zimne).

Podsumowanie
Jeśli po drodze wymyślisz kilka przydatnych poleceń, które mogłyby stać się częścią standardu
zestaw poleceń, prześlij mi je e-mailem, a rozważę ich integrację. W przyszłości I
chciałbym również udostępnić standardową bibliotekę skryptów Perla do zaimplementowania kilku dziwnych rozwiązań
polecenia, które mogą być potrzebne w szczególnych przypadkach.

Pamiętaj, że możesz także użyć informacji przedstawionych tutaj w skryptach ucieczki Perla.
Via wymagać operator, łatwo jest wprowadzić nową implementację poleceń do swojego
skrypt i wykonaj to samo zadanie. Być może będziesz musiał samodzielnie skonfigurować @ARGV, jeśli tak
polegaj na tej funkcji w implementacji poleceń.

Rozszerzenie poleceń można również postrzegać jako sposób na ponowne wykorzystanie innego kodu Perla, agenta pocztowego
zapewnienie stałej i niezawodnej ramki oraz zewnętrzny program realizujący usługę. Jeden
natychmiastowym rozszerzeniem byłaby obsługa list mailingowych przy użyciu tego mechanizmu do komunikacji
jakiś program do zarządzania listami mailingowymi napisany w Perlu.

RODZAJOWY MAIL SERVER


Jedną z zalet programu pocztowego jest to, że zapewnia podstawowe narzędzia do wdrożenia a
ogólny serwer pocztowy. Rzeczywiście, za pomocą polecenia SERVER możesz przetworzyć wiadomość e-mail,
wyodrębnij, a następnie wykonaj kilka predefiniowanych poleceń. Na przykład możesz zaimplementować plik
serwer archiwum, menedżer list mailingowych itp.

Głównym ograniczeniem jest obecnie to, że akceptowane są tylko zwykłe polecenia lub polecenia
biorąc dodatkowe informacje jako wkład lub odpowiednik. Nie ma pojęcia o trybach,
z oddzielnymi zestawami poleceń dla każdego trybu lub ograniczoną widocznością przestrzeni nazw, przynajmniej dla
teraz, więc nie jest łatwo (aczkolwiek możliwe) zaimplementować na przykład serwer FTP,
ponieważ implikuje to pojęcie trybu.

Omówienie
Aby zaimplementować polecenie serwera pocztowego (powiedzmy send filet, co spowodowałoby wysłanie dowolnego pliku
plik z systemu plików w osobnej wiadomości e-mail), musisz wykonać następujące czynności:

· Pomyśl o poleceniu z punktu widzenia bezpieczeństwa. Tutaj polecenie, które chcemy
implementacja jest potencjalnie niebezpieczna, ponieważ może dać dostęp do dowolnego pliku na dysku
maszyna do biegania agent pocztowy ma dostęp do. Dlatego chcemy to ograniczyć
polecenie ograniczonej liczbie zaufanych osób, którym zostanie przyznane power biegać
to polecenie. Więcej na ten temat później.

· Wybierz, czy chcesz zaimplementować polecenie w Perlu, czy w innym programie
język. Jeśli zrobisz to drugie, twoje polecenie będzie znane jako a powłoka polecenie (tzn
polecenie uruchamiane bezpośrednio z powłoki), podczas gdy w pierwszym przypadku masz
wybór wyświetlania go jako a powłoka polecenie, lub podłącz go do agent pocztowy in
w którym przypadku jest to tzw Perl Komenda. W tym ostatnim przypadku Twoje polecenie będzie takie
dynamicznie ładowany do programu pocztowego ze wszystkimi korzyściami, jakie Ci to daje. Tutaj my
napiszemy nasze polecenie jako skrypt powłoki.

· Napisz samo polecenie. To najtrudniejsza część tego planu. Później,
zobaczymy prostą implementację wyślij dowództwo.

· Edytuj serwer kom plik (zdefiniowany w pliku ~/.agent pocztowy), aby nagrać nowe polecenie.
Następnie upewnij się, że ten plik jest ściśle chroniony. Musisz to posiadać i być tym jedynym
wolno go modyfikować.

· Dodatkowo możesz ukryć niektóre argumenty w transkrypcie sesji
(więcej na ten temat później), pozwól poleceniu przyjąć przepływ danych jako swój wkład,
przypisz ścieżkę do polecenia itp. Wszystkie te parametry mają miejsce w pliku
serwer kom plik.

· Zacznij używać polecenia... co oczywiście jest najprzyjemniejszą częścią tego schematu!

W poniższych sekcjach dowiemy się o składni języka serwer kom plik, co uprawnienia
jak budowany jest transkrypcja sesji, jakie jest środowisko poleceń itp.

Wbudowany Polecenia Omówienie
Serwer pocztowy ma ograniczony zestaw wbudowanych poleceń zajmujących się uwierzytelnianiem użytkowników
i ustawienia środowiska poleceń. Uwierzytelnianie użytkownika odbywa się na podstawie hasła i tak nie jest
wyjątkowo silne, ponieważ hasła są wyraźnie określone w samej wiadomości e-mail,
które można było łatwo przechwycić.

Serwer podtrzymuje koncepcję uprawnienia. Jeden użytkownik może mieć więcej niż jedną moc na raz
czasie, przy czym każde mocarstwo przyznaje jedynie ograniczony dostęp do pewnego wrażliwego obszaru. Jest kilka uprawnień
okablowane na serwerze, ale w razie potrzeby użytkownik może utworzyć nowe. Te moce są
wymuszane programowo, co oznacza, że ​​polecenie musi samo sprawdzić, czy jest potrzebne
moc(e) niezbędną do prawidłowego działania.

Uprawnienia są chronione hasłem i plikiem rozliczeniowym. Posiadanie dobrego hasła nie jest
wystarczy, musisz zostać dopuszczony, aby (nadużyć) z niego korzystać. Plik rozliczeniowy to lista e-
wzorce adresów pocztowych, przy użyciu schematu metaznaków powłoki, ktoś jest usuwany, jeśli i
tylko w przypadku, gdy jego adres e-mail odpowiada przynajmniej jednemu ze wzorców z pliku rozliczeniowego.
Im częściej będziesz korzystał z metaznaków, tym słabszy będzie ten schemat rozliczeń, tzw
bądź ostrożny.

Twoje polecenia i dane wyjściowe wynikające z ich wykonania są zwykle wysyłane do Ciebie pocztą
jako zapis sesji. Ze względów bezpieczeństwa hasła w wierszu poleceń są ukryte.
Podobnie, niepowodzenie w zdobyciu mocy nie będzie oznaczać, czy brakowało Ci autoryzacji, czy też
czy Twoje hasło było złe.

Użytkownik z system władza może tworzyć nowe moce, usuwać inne moce, zmieniać
hasła mocy oraz wyświetlaj, usuwaj i zmieniaj zezwolenia na moc. To jest w jakiś sposób ważne
mocy, która powinna być zatrzymana przez niewielką liczbę użytkowników z bardzo rygorystycznym zezwoleniem (nr
metaznaki w adresie, jeśli to możliwe). Dobre hasło powinno również to chronić
moc.

Jednak użytkownik z system moc nie może bezpośrednio uzyskać innej mocy bez
podając swoje hasło i mając na to pozwolenie na podstawie powiązanego pliku rozliczeniowego. Ale
można by to osiągnąć pośrednio, usuwając władzę i tworząc nową
taki, który nosi tę samą nazwę. Aby kontrolować ludzi za pomocą system moc, a także dla
w jakiejś trudnej sytuacji istnieje inna, bardziej boska moc: korzeń moc.

Użytkownik z korzeń władza może zrobić praktycznie wszystko, ponieważ natychmiast to przyznaje
indywidualny cała kolekcja uprawnienia dostępne na serwerze (ale bezpieczeństwo). Jedynym ograniczeniem jest
że korzeń nie można usunąć korzeń sama moc. Należy określić bezpieczeństwo password
(kolejne zasilanie przewodowe), aby kontynuować. Nie trzeba dodawać, że tylko pierwszej jednostka powinna
mieć obydwa korzeń oraz bezpieczeństwo zezwolenia i tylko jedna osoba powinna o tym wiedzieć bezpieczeństwo
hasło i być wymienione w pliku rozliczenia. The system władza nie może zaszkodzić żadnemu z nich
dwie moce. Ostatecznie więcej niż jeden użytkownik może mieć korzeń władzę, ale nie udzielaj
to lekko...

Uzyskiwanie korzeń moc jest konieczna, gdy system namieszał w konfiguracji systemu
w beznadziejny sposób lub gdy trzeba wydać długą, atomową sekwencję poleceń: korzeń is
nie podlega maksymalnej liczbie poleceń, jakie można wydać w jednym komunikacie.

Jeśli tak myślisz agent pocztowy funkcja jest niebezpieczna dla Twojego konta, nie twórz pliku
korzeń oraz bezpieczeństwo mocy i nie pisz żadnych wrażliwych poleceń.

Wbudowany Polecenia Definicja
Przyjrzyjmy się teraz tym wbudowanym poleceniom. Hasła wrażliwych poleceń będą
ukryte w protokole sesji. Niektóre polecenia akceptują wprowadzanie danych poprzez czytanie poczty
wiadomość do EOF znacznik, który sam w sobie jest prostym ciągiem EOF w linii (analogicznie
z skorupami w tym miejscu dokumenty).

addauth power password
Dodaj użytkowników do pliku rozliczeń dla power. Jeśli podano hasło zasilania, nie
potrzebna jest specjalna moc, w przeciwnym razie system wymagana jest moc. Dla korzeń or
bezpieczeństwo mocy, wymagana jest odpowiednia moc, lub password musi być
określony. Polecenie odczytuje standardowe wejście aż do znacznika EOF, aby uzyskać
nowi użytkownicy.

Zatwierdzać password komenda
Rejestruje hasło w środowisku poleceń, a następnie wykonuje polecenie. Jeśli
wymagana jest moc, która nie została jeszcze uzyskana, polecenie wyszuka hasło
w środowisku i spróbuj uzyskać odpowiednią moc za pomocą tego hasła. Stąd,
zatwierdzone polecenie (z właściwym hasłem) zostanie wykonane w sposób przezroczysty bez
kłopot z żądaniem zasilania, wydaniem polecenia, a następnie zwolnieniem
moc. Wykonanie polecenia zależy od polecenia Zatwierdzać test hasła, patrząc
na Zatwierdzać zmienna w środowisku poleceń (patrz poniżej). Od odprawy
kontrole (takie jak te przeprowadzane przy żądaniu zasilania) nie są przeprowadzane, nie
wrażliwe polecenie powinno zawsze zajmować się Zatwierdzać zbudować.

moc power password [bezpieczeństwo]
Usuń moc z systemu i powiązaną z nią listę uprawnień. The system
do usunięcia większości mocy z wyjątkiem mocy wymagana jest moc korzeń oraz bezpieczeństwo, bezpieczeństwo
moc może zostać usunięta tylko samodzielnie i przez korzeń moc może zostać usunięta tylko wtedy, gdy
dotychczasowy bezpieczeństwo hasło jest również określone.

ucieczka power password
Uzyskaj aktualny plik rozliczeń dla danej mocy. Nie jest wymagana żadna specjalna moc, jeśli
podano hasło lub moc jest już zatrzymana. W przeciwnym razie moc systemu
jest potrzebny dla wszystkich mocy, ale korzeń or bezpieczeństwo gdzie jest odpowiednia moc
obowiązkowy.

nowa siła power password [Alias]
Dodaj nową moc do systemu. Następnie polecenie odczytuje standardowe dane wejściowe poczty
aż do znacznika EOF, aby uzyskać listę uprawnień. The system moc jest
wymagane do stworzenia nowej mocy, chyba że tak jest korzeń or bezpieczeństwo: the bezpieczeństwo power
jest wymagane do utworzenia korzeń i korzeń do tworzenia potrzebna jest moc bezpieczeństwo.

passwd power stary nowych
Zmień hasło zasilania. Nie ma znaczenia, czy posiadasz już odpowiedni
power, musisz podać prawidłowe stare hasło. Zobacz także password dowództwo.

password power nowych
Zmień hasło zasilania. Wymagana jest odpowiednia moc lub musisz ją zdobyć
dotychczasowy system moc. Żeby zmienić korzeń or bezpieczeństwo hasła, potrzebujesz
odpowiednia moc.

power Nazwa password
Poproś o nową moc. Oczywiście, korzeń nie musi prosić o nic innego
moc, ale bezpieczeństwo, mniej podaj hasło. To polecenie nie jest honorowane, gdy
serwer nie jest w trybie zaufanym, bez wiedzy użytkownika: pojawia się komunikat o błędzie w pliku
plik transkrypcji nie różni się od pliku uzyskanego przy użyciu nieprawidłowego hasła.

uprawnienia regexp
Wypisz wszystkie potęgi pasujące do wyrażenia regularnego Perla wraz z ich potęgami
odpowiedni plik rozliczeniowy. The system aby uzyskać listę, wymagane jest zasilanie. The
korzeń or bezpieczeństwo aby uzyskać dostęp do sieci, wymagane jest zasilanie korzeń or bezpieczeństwo
odpowiednio informacje. Jeśli nie zostaną podane żadne argumenty, zostaną podane wszystkie potęgi
katalogowany.

zwolnić power
Pozbądź się części mocy.

remauth power password
Usuń użytkowników z pliku rozliczeń, uzyskując listę, czytając standardową pocztę
wejście aż do znacznika EOF. To polecenie nie wymaga żadnej specjalnej mocy, jeśli
podano prawidłowe hasło lub jeśli zasilanie zostało już zatrzymane. W przeciwnym razie,
dotychczasowy system potrzebna jest moc. Dla korzeń oraz bezpieczeństwo prześwit, odpowiedni
moc też jest potrzebna.

zestaw zmienna wartość
Ustaw zmienną na odpowiednią wartość. Przydatne do zmiany zmiennych wewnętrznych
jak wartość znacznika EOF, lub zmień jakieś środowisko poleceń. Użytkownik może
zdefiniować własne zmienne dla swoich poleceń. Dla flaga-type zmienna, wartość
on, tak or prawdziwy ustawia zmienną na 1, ustawia go dowolny inny ciąg 0 (fałszywe).
Używany samodzielnie jako zestaw, listę wszystkich zdefiniowanych zmiennych wraz z
zwracane są ich odpowiednie wartości.

ustawienie power password
Zastąp plik rozliczenia mocy plikiem uzyskanym ze standardowego wejścia poczty do
znak EOF. The system zasilanie jest potrzebne, chyba że określisz prawidłowe hasło
albo moc jest już twoja. Jak zwykle, korzeń or bezpieczeństwo prześwity mogą być tylko
zmienia się po zatrzymaniu zasilania.

użytkownik [e-mail [Komenda]]
Wykonaj polecenie, przyjmując określoną tożsamość e-mail. Moce są tracone podczas
wykonanie polecenia. Tożsamość adresu e-mail można sprawdzić za pomocą samego polecenia,
co może nałożyć dalsze ograniczenia na wykonanie, takie jak uzyskanie dostępu użytkownika
określone uprawnienia. Należy pamiętać, że to polecenie modyfikuje tylko środowisko globalne i
że to zależy od komenda wdrożenia w celu wykorzystania tych informacji. Jeśli
nie podano żadnego polecenia, zakładana jest nowa tożsamość, dopóki nie zostanie zmieniona przez inną
użytkownik polecenie i wszystkie uprawnienia aktualnie posiadane przez użytkownika zostają zwolnione. Jeśli nie
e-mail adres, przywracany jest pierwotny identyfikator użytkownika.

Command Środowisko
Istnieje sześć typów poleceń i zmiennych, które można określić w trybie serwera. Dwa z
im, zakończenia oraz pomoc typy są specjalne i obsługiwane oddzielnie. Dwa typy było oraz flaga odnosić się
do zmiennych i dwóch ostatnich typów Perl oraz powłoka patrz polecenia.

Ilekroć agent pocztowy uruchamia polecenie serwera, konfiguruje środowisko dla tego polecenia: if
to jest Perl-type, wówczas przed załadowaniem pliku zostanie ustawiony zestaw zmiennych Perla
Komenda; jeśli jest to A powłoka-type, inicjowane są niektóre zmienne środowiskowe i
Deskryptor pliku nr 3 jest skonfigurowany tak, aby wskazywał bezpośrednio transkrypcję sesji agenta pocztowego.

A powłokaPolecenie -type zostało rozwidlone, podczas gdy a PerlPolecenie -type jest ładowane bezpośrednio agent pocztowy
w ciągu cmdenv pakiet. Działa to podobnie do polecenia filtrowania PERL, z tą różnicą, że
pakiet docelowy jest inny i ustawiony jest odrębny zestaw zmiennych.

Niektóre polecenia zbierają dodatkowe dane aż do znacznika końca pliku (domyślnie string
EOF w osobnej linii) i te dane są podawane do poleceń powłoki poprzez stdin i do perla
polecenia poprzez @bufor zmienna ustawiona w pakiecie środowiskowym o nazwie cmdenv (w którym
polecenie jest ładowane i uruchamiane).

Jeśli zdefiniujesz własne zmienne (types było or flaga), możesz użyć wbudowanego zestaw komenda
modyfikować ich wartości. Należy pamiętać, że podczas definiowania pliku nie można podać wartości domyślnej
zmienny. W poleceniach korzystających z nich należy ustawić odpowiednią wartość domyślną, np
zaletą jest to, że różne polecenia mogą używać różnych wartości domyślnych.

Poniższy środowisko zmienne są zdefiniowane. Większość z nich jest przeznaczona tylko do odczytu, chyba że zostanie o tym powiadomiona
w przeciwnym razie w takim przypadku wbudowany zestaw można na nich użyć polecenia.

Zatwierdzać Hasło zatwierdzające dla Zatwierdzać polecenia, puste, jeśli nie znajdują się w wbudowanym Zatwierdzać
zbudować.

auth Flaga ustawiona na true, gdy w wiadomości e-mail znaleziono prawidłową kopertę. Gdy
ta flaga jest fałszywa, serwer nie może zostać przełączony w tryb zaufany.

cmd Wiersz poleceń, jak napisano w komunikacie.

zbierać Flaga wewnętrzna ustawiona na true podczas zbierania danych wejściowych z dokumentu tutaj. To jest
zwykle resetuje się do wartości false przed wywołaniem polecenia.

debug Prawda, gdy tryb debugowania jest włączony (można ustawić).

niepełnosprawny Rozdzielana przecinkami lista wyłączonych poleceń, bez spacji między nimi. Ten
jest inicjowany po wywołaniu polecenia SERVER i -d używana jest opcja.

euf Bieżący znacznik końca pliku dla poleceń znajdujących się w tym dokumencie. Domyślnie ustawione na
„EOF” (można zmienić).

błędy Liczba błędów do tej pory.

numer pracy Numer zadania przypisany do bieżącego agenta pocztowego.

log To, co zostało zapisane w transkrypcji, z możliwością ukrycia niektórych argumentów.

Nazwa Nazwa polecenia.

pakiet Tryb pakowania do wysyłania plików (można ustawić).

ścieżka Adres docelowy do wysyłania plików lub powiadomień (można ustawić).

uprawnienia Rozdzielona dwukropkiem (:) lista uprawnień, które użytkownik aktualnie posiada
poprosiłem i dostałem.

wywołań Liczba wniosków przetworzonych do tej pory.

wyśledzić Prawda, gdy polecenia powłoki mają być śledzone w transkrypcji (można ustawić).

zaufany Prawda, gdy serwer znajduje się w trybie zaufania, w którym można uzyskać uprawnienia. To jest aktywowane
przez -t opcję polecenia SERVER, pod warunkiem, że wprowadzono prawidłową kopertę pocztową
znaleziono.

uid Adres nadawcy wiadomości, na który ma zostać wysłany zapis. Przez
rozszerzenie, prawdziwy identyfikator użytkownika dla serwera, który jest podstawą mocy
mechanizm rozliczeniowy.

użytkownik Efektywny identyfikator użytkownika, pierwotnie taki sam jak identyfikator użytkownika, ale można go zmienić za pomocą
dotychczasowy użytkownik wbudowane polecenie.

Sesja Transkrypcja
Transkrypcja sesji jest automatycznie wysyłana pocztą do użytkownika, który zażądał serwera
dostęp. Ten zapis pokazuje polecenia uruchomione przez użytkownika i ich status: OK or FAILED.
Pomiędzy tymi dwoma wierszami transkrypcja pokazuje wszelkie dane wyjściowe jawnie wykonane poleceniem to
transkrypcja. Zwykle transkrypcja może być używana do przekazywania komunikatów o błędach z powrotem do
użytkownik, ale nawet polecenia wykonywane poprawnie mogą chcieć wydać wyraźny komunikat,
stwierdzając, co właśnie zostało zrobione.

Polecenie Perla może uzyskać dostęp do transkrypcji poprzez POCZTA uchwyt pliku zdefiniowany w pliku cmdenv
pakiet, podczas gdy polecenie powłoki może uzyskać do niego dostęp poprzez deskryptor pliku nr 3.

Należy pamiętać, że transkrypcja sesji jest wysyłana pocztą na adres nadawca wiadomości, tj. ktokolwiek
Linia nagłówka koperty mówi, że tak. Jeśli chodzi o serwer to jest to adres e-mail
używany jako identyfikator użytkownika, tak jak zwykła nazwa logowania może być traktowana jako identyfikator użytkownika. Dla
wrażliwych poleceń, uwierzytelnianie na podstawie tych informacji jest naprawdę słabe. Więcej
„bezpieczne” uwierzytelnianie zapewniane jest przez moc serwera i opiera się na haśle.
Niestety, jasne hasło musi zostać przesłane w samej wiadomości i może tak być
podsłuchany.

Nagranie Nowości Polecenia oraz Zmienne
Polecenia i zmienne serwera są zdefiniowane w pliku serwer kom plik zdefiniowany w pliku
~/.agent pocztowy. Format pliku to tabela z elementami w wierszach oddzielonymi znakami
znaki tabulacji. Każda linia definiuje jedno polecenie lub zmienną. Każde nieistotne pole może być
wprowadzone jako pojedynczy znak „-” (minus). Format pozwala na komentarze w stylu powłoki (#).

Każdy wiersz zawiera następujące pola:

Nazwa rodzaj ukryć zbieranie danych ścieżka dodatkowy

gdzie:

Nazwa to nazwa polecenia lub zmiennej rozpoznawana przez serwer.

rodzaj Jest to jeden z Perl, powłoka, było, flaga, pomoc or zakończenia.

ukryć wskazuje, które argumenty w poleceniu mają być ukryte (nazwa polecenia
będący argumentem zero) w transkrypcie sesji. Użyj „-”, jeśli nie ma argumentów
trzeba się ukryć. Zwykle służy to do ukrywania jasnych haseł
polecenia. Jeśli trzeba ukryć więcej niż jeden argument, wówczas należy wyświetlić listę
Można podać liczby oddzielone znakiem „,” (przecinkiem), za pomocą Nie obowiązuje pomiędzy
ich. Na przykład „2,4” ukryje argumenty 2 i 4 w transkrypcji.

zbieranie danych to flaga (określ jako „y” lub „n”, ale możesz użyć pełnych słów
„tak” lub „nie”) wskazujące, czy polecenie zbiera dodatkowe dane w a
tutaj - dokument aż do znacznika EOF. Alternatywnie możesz określić „-” w
miejsce „n”.

ścieżka określa ścieżkę polecenia (dozwolone podstawienie ~nazwy). Jeśli nie
istotne (np. przy definiowaniu zmiennej) lub gdy chcesz ją opuścić
puste, użyj „-”. Jeśli dla pliku zostanie określona pusta ścieżka Perl or powłoka Komenda,
wówczas oczekuje się, że implementacja tego polecenia zostanie znaleziona w serwer,
zgodnie z definicją w ~/.agent pocztowy. Jeśli nazwa polecenia to cmd na przykład wtedy
oczekiwane jest polecenie perl w pliku o nazwie cmd of cmd.pl, natomiast
Oczekuje się, że polecenia powłoki zostaną znalezione w pliku cmd of cmd.sh plik. Zauważ to
polecenie jest wyłączone, jeśli nie można go zlokalizować w momencie serwer kom
plik jest analizowany.

dodatkowy to dodatkowy parametr potrzebny do wykonania polecenia. W odróżnieniu od innych dziedzin, ta
należy pozostawić puste, jeśli nie są potrzebne. Wszystko do końca linii jest
złapany przez to pole. Polecenia Perla powinny określać nazwę Perla
funkcja do wywołania w celu wykonania polecenia; jeśli nie określono żadnego, nazwa
wywoływane jest samo polecenie. Polecenia powłoki mogą używać tego pola do zasilania
dodatkowe opcje, które zostaną wstawione zaraz po nazwie polecenia i
przed innymi argumentami dostarczonymi przez użytkownika. Inni powinni zostawić to w spokoju.

Specjalny Command rodzaje
Obecnie istnieją dwa specjalne typy poleceń.

Najprostszy jest zakończenia typ. Służy do określania poleceń, które mogą zakończyć działanie serwera
przetwarzanie. Domyślnie przetwarzanie jest kontynuowane aż do osiągnięcia końca pliku lub a
Znaleziono ogranicznik podpisu „--”. Na przykład możesz chcieć zdefiniować polecenie porzucić
i daj zakończenia typ. Gdy tylko serwer osiągnie to polecenie, działanie zostanie przerwane
przetwarzanie i odrzuca pozostałą część wiadomości.

pomoc typ jest zwykle dołączony do pomoc polecenie i wypisuje pomoc na podstawie polecenia,
pomoc dla każdego polecenia przechowywanego w pliku pomocnik zmienna (zdefiniowana w pliku
~/.agent pocztowy) w pliku o tej samej nazwie co samo polecenie. Na przykład zakładając
Komenda strzelać, można by się spodziewać jego pliku pomocy pomoc / strzelanie. Jeśli nie zostanie znaleziony żaden plik
tam mailagent szuka w swojej bibliotece publicznej (/usr/share/mailagent) pliku pomocy.
Pomoc jest udostępniana tylko wtedy, gdy plik pomocy istnieje i nie ma zerowego rozmiaru.

Tworzenie dotychczasowy Korzeń Prąd
Aby załadować serwer, musisz utworzyć uprawnienia roota. Wszystkie inne uprawnienia
można następnie utworzyć za pomocą interfejsu serwera, co zapewnia spójność i rejestruje Twoje pliki
działania. Jeśli w ogóle nie planujesz używać mocy, możesz pominąć tę sekcję.

Najpierw musisz wybrać dobre hasło do korzeń moc. Ktoś z korzeń power
może zrobić praktycznie wszystko z serwerem, więc bądź ostrożny. Załóżmy, że wybierasz źródło-
przechodzić jako hasło.

Edytuj passwd (zdefiniowane w twoim ~/.agent pocztowy) i dodaj następujący wiersz:

źródło: :

tj. wprowadź hasło wyraźnie pomiędzy „<” i „>”. Nie pozostanie długo w tej formie,
ale to najłatwiejszy sposób na załadowanie go. Chronić passwd plik ściśle (odczyt i zapis
uprawnienia tylko dla Ciebie). Następnie utwórz katalog zasilania/root plik, chroń go w ten sam sposób i
dodaj do niego swój adres e-mail, w osobnym wierszu. To musi będzie adresem, który będzie
pojawić się w Od: linię Twoich maili. Ponieważ pliki rozliczeń obsługują styl powłoki
wzory, z których możesz skorzystać login@*domena.top aby umożliwić wysyłanie wiadomości e-mail z Twojego loginu z dowolnego komputera
Twoja domena.

Jesteś prawie gotowy. Teraz po prostu wydaj następujące polecenie:

agent pocztowy -i -e 'SERWER -t'

i podaj jego standardowe wejście za pomocą:

Od Twój e-mail adres
Od: Twój e-mail adres

root-pass mocy
hasło root-pass
^D

Zauważ, że pierwszy Od linia jest tutaj obowiązkowa, ponieważ jest to koperta, na której
opiera się na uwierzytelnianiu. Ponieważ karmimy agenta pocztowego ręcznie wykonaną wiadomością, my
musi podać prawidłową kopertę, w przeciwnym razie serwer nie przełączy się w tryb zaufany...

Skutkiem ubocznym ponownego utworzenia hasła będzie jego zaszyfrowanie w pliku passwd file,
aby ktokolwiek przeglądający ten plik nie mógł odgadnąć Twojego pliku korzeń hasło, mam nadzieję.

Gdy już będziesz mieć ważny korzeń zainstalowanej mocy, możesz utworzyć plik system moc za pomocą
nowa siła. Dalsze uprawnienia można następnie tworzyć i usuwać za pomocą system tylko moc.

Powinieneś także utworzyć plik bezpieczeństwo power i nadaj mu inne hasło niż hasło korzeń
hasło. Jest to naprawdę potrzebne tylko wtedy, gdy chcesz zdalnie administrować serwerem. Jeśli
masz dostęp lokalny i wszystko ulega uszkodzeniu, zawsze można zmienić katalog główny
hasło ręcznie, powtarzając tę ​​sekwencję ładowania.

Należy pamiętać, że kontrole odprawy dokonywane są na podstawie adresu koperty wiadomości, czyli: a
trochę trudniejsze do sfałszowania niż zwykłe pola nagłówka Nadawca:. Koperta jest wyciągana
patrząc na pierwszą linię nagłówka, która w systemach Unix wygląda następująco:

Od adres kopertowy Przyślij datę

i jest wstawiany przez agenta transportu poczty (MTA). Jeśli używasz Wyślij maila jak MTA,
wtedy tylko zaufany użytkownicy zadeklarowani w sendmail.cf plik jest w stanie stworzyć „fałszywy”
adres koperty, funkcja zwykle używana przez osoby wysyłające listy mailingowe, ponieważ jest to adres
jest następnie używany jako cel zwrotów w przypadku, gdy poczta nie może zostać dostarczona. Jeśli to pierwsze
nie ma linii nagłówka, nadawca jest obliczany przy użyciu metody Nadawca: pole, jeśli jest obecne, to
Od: pole, ale auth zmienna ma wartość false i serwer nie przełączy się na nią
tryb zaufany; innymi słowy, na tej sesji nie będzie możliwe zdobycie uprawnień.

Co więcej, ponieważ transkrypcja sesji jest wysyłana na ten sam adres kopertowy, co dotychczas
uwierzytelnić uprawnienia do mocy, do której trudno jest przyzwyczaić się do funkcji serwera
odzyskać poufne informacje przechowywane w witrynie, w której znajduje się agent pocztowy jest prowadzony od
informacje zostaną przesłane do jednego z użytkowników uprawnionych do tego uprawnienia. To jest
Twoim obowiązkiem jest upewnienie się, że coś takiego nie może się wydarzyć lub do którego mógłbyś się dostać
kłopoty prawne.

Wreszcie wrażliwe polecenia powinny być chronione przez odpowiednią władzę i należy zachować szczególną ostrożność
Wykonanie polecenia powinno zostać podjęte na piśmie w celu zapewnienia bezpieczeństwa
obejść. Ale nie, ta funkcja poczty nie jest uważana za niebezpieczną dla
systemie lub witrynie, w której jest używany, ponieważ zdeterminowany użytkownik mógłby to w prosty sposób wdrożyć za pomocą:
pięcioliniowy skrypt powłoki. Jeśli bezpieczeństwo jest naprawdę problemem, .Naprzód plików za pomocą rurociągów
funkcja powinna być zabroniona, a dostęp do niej powinien być zabroniony cron zabronione, aby uniknąć automatycznej poczty
przetwarzanie (ponieważ możliwe byłoby wywołanie przez cron pliku a agent pocztowy proces -lub dowolny
inny program do tego celu - do przetwarzania poczty przychodzącej w porównywalny sposób).

Przykład
Oto przykład pokazujący etapy tworzenia pliku powłoka polecenie, które by to zrobiło
weź skrypt, zbierając linie aż do znaku EOF i podaj go do prawdziwej powłoki
wykonanie. Ponieważ zezwolenie na tę funkcję bez żadnych zabezpieczeń byłoby prawdziwym bezpieczeństwem
dziurę, chronimy ją, żądając mocy powłoka przed dopuszczeniem do egzekucji.

Oto moja implementacja powłoka polecenie (dostępne w dystrybucji mailagenta
dla różne/skorupa):

#!/ Bin / sh

# Wykonuj polecenia ze standardowego wejścia, przesłane przez serwer pocztowy.
# Deskryptor pliku nr 3 jest kanałem do transkrypcji sesji.

# Upewnij się, że mamy moc powłoki.
# Nie pozwalaj nawet rootowi na ominięcie tego ze względów bezpieczeństwa.
case ":$powers:" w
*:powłoka:*) ;;
*)
echo "Odmowa dostępu." >&3
wyjście 1
;;
to C

# Być może zdefiniowano powłokę... W przeciwnym razie użyj / Bin / sh
przypadek „$shell” w
'') powłoka='/ Bin / sh';;
to C

# Normalnie wynik polecenia powłoki jest uwzględniany w transkrypcji tylko w
# przypadek błędu lub gdy użytkownik zażąda śledzenia. Tutaj jednak musimy
# zobacz co się stało, więc wszystko zostanie przekierowane do transkrypcji sesji.

wykonaj $powłoka -x >&3 2>&3

Zwróć uwagę, w jaki sposób zapewniamy dostęp do pliku $moce oraz $powłoka Zmienna środowiskowa. To ostatnie
zdefiniowane przez użytkownika, aby umożliwić dynamiczną konfigurację powłoki.

Zakładając, że przechowujemy to polecenie pod servdir/shell.sh (nie zapomnij dodać pliku wykonanie
bit w pliku...), oto jak deklarujemy go i jego zmienną w pliku serwer kom plik.

powłoka powłoka - y -
powłoka var - - -

Ten przykład pokazuje, że istnieje oddzielna przestrzeń nazw dla zmiennych i poleceń.
Co więcej, polecenie nosi tę samą nazwę, co jego typ - niech cię to nie zmyli :-).

Zakładając, że już utworzyłeś plik system zasilania i zabezpieczył je hasłem
(Załóżmy sys-pass na potrzeby tego przykładu) musisz utworzyć powłokę
moc. Chociaż możesz to zrobić ręcznie (jak wtedy, gdy ręcznie wykonałeś plik korzeń moc) jest
lepiej używać interfejsu SERWERA, ponieważ zapewnia to spójność.

W celu stworzenia powłoka moc potrzebna do korzystania z nowo utworzonego powłoka polecenie, ty
musisz dodać następującą regułę do pliku reguł:

Temat: Serwer { ZAPISZ serwer; SERWER -t };

który zapisze całą pocztę serwera w dedykowanym folderze i przetworzy ją. Zanotuj -t
opcja umożliwiająca tryb zaufany, w którym można zdobywać uprawnienia. Teraz wyślij sobie
następująca poczta:

Temat: Serwer
sys-pass systemu zasilania
Shell-Pass powłoki newpower
[email chroniony]
EOF

które żądają system moc (potrzebną do stworzenia większości mocy), a następnie tworzy
nowa moc powłoka, przypisywanie przepustka powłoki jako hasło i wyczyszczenie [email chroniony] dla tego.
Zwróć uwagę na wypełnienie w tym dokumencie polecenia newpower aż do znacznika EOF. Oczywiście,
musisz zastąpić adres prawdziwym adresem.

Otrzymasz zapis sesji w następujący sposób:

---- Zapis sesji agenta pocztowego dla [email chroniony] ----

----> system zasilania ********
OK.

====> powłoka newpower ********
OK.

====> --
Koniec przetwarzania (.signature)

---- Koniec transkrypcji sesji agenta pocztowego ----

Zwróć uwagę na ukryte hasła i monit o zmianę po wyłączeniu zasilania systemu
nadany. Ponieważ mój mailer automatycznie dołącza podpis, przetwarzanie zatrzymuje się na nim.

Teraz użyjmy tego nowego polecenia... Wyślij sobie następujący e-mail:

Temat: Serwer
ustaw powłokę /bin/ksh
ustaw eof KONIEC
powłoka
ls -l / Etc / passwd
KONIEC
Power Shell Shell-pass
powłoka
ls -l / Etc / passwd
KONIEC

Jeśli wszystko się zgadza, powinieneś otrzymać transkrypcję wyglądającą tak:

---- Zapis sesji agenta pocztowego dla [email chroniony] ----

----> ustaw powłokę /bin/ksh
OK.

----> ustaw eof END
OK.

----> skorupa
Odmowa pozwolenia.
Polecenie zwróciło niezerowy status (1).
PRZEGRANY.

----> obudowa zasilania **********
OK.

====> skorupa
+ ls -l / Etc / passwd
-rw-r--r-- 1 system korzeniowy 691 01 października 14:24 / Etc / passwd
OK.

====> --
Koniec przetwarzania (.signature)

---- Koniec transkrypcji sesji agenta pocztowego ----

Pierwsze wywołanie powłoka polecenie kończy się niepowodzeniem, ponieważ brakuje nam pliku powłoka moc. Sznurek
„Odmowa pozwolenia”. jest powtarzane przez samo polecenie do deskryptora pliku nr 3 i powoduje to
do transkrypcji.

Podsumowanie
Ogólny serwer poczty zaimplementowany w agencie pocztowym może zostać użyty do zaimplementowania listy mailingowej
manager, serwer głosowania, serwer archiwum itp. Niestety obecnie tak nie jest
mają pojęcie stanu z zestawem poleceń dedykowanym każdemu stanowi, więc tak nie jest
możliwość wdrożenia inteligentnego serwera archiwum.

Jeśli wdrażasz nowe proste polecenia serwera i uważasz, że są one na tyle ogólne, że takie mogą być
przyczyniły się, proszę o przesłanie ich do mnie, a ja chętnie je zintegruję.

PRZYKŁADY


Oto kilka przykładów plików reguł. Po pierwsze, jeśli nie określisz pliku reguły lub jeśli tak jest
pusty, obowiązuje następująca wbudowana reguła:

Wszystko: /^Temat: [Cc]polecenie/ { WYJDŹ; PROCES };

Każdy list zostaje w skrzynce pocztowej. Poza tym wyślij e-mail z „Tematem: Polecenie” w dowolnym miejscu pliku
wiadomości są przetwarzane.

Obecnie używam następującego pliku reguł:

maildir = ~/poczta;

Wszystko: /^Temat: [Cc]polecenie/ { ZAPISZ polecenia; PROCES };

Do: /^[email chroniony]/ { POST -l mail.gue };
Podobno-Do: barana,
Grupy dyskusyjne: mail.gue { ODBIÓR [email chroniony] };

<_SEEN_>
Podobno-Do: barana,
Grupy dyskusyjne: mail.gue { USUŃ };

Od: root, Do: root { BEGIN ROOT; ODRZUCIĆ };
/^Codzienne wyjście/ { ZAPIS ~/var/log/york/codziennie.%D };
/^Cotygodniowe dane wyjściowe/ { ZAPIS ~/var/log/york/tygodniowo };
/^Miesięczne dane wyjściowe/ { ZAPIS ~/var/log/york/co miesiąc };

Od: ram { ROZPOCZNIJ RAM; ODRZUCIĆ };
Do: barana { WYJDŹ };
X-Mailer: /mailagent/ { WYJDŹ };
{ USUWAĆ };

Katalog folderów jest ustawiony na ~/poczta. Wszystkie wiadomości e-mail z poleceniami są zapisywane w folderze
~/poczta/cmds i przetworzone. Nie pojawiają się w mojej skrzynce pocztowej. Maile kierowane do GUE
lista mailingowa (francuska Grupa Użytkowników Eiffla, a mianowicie Groupe des Utilisateurs Eiffel) to
opublikowano na lokalnej grupie dyskusyjnej poczta. gue i nie pojawiają się również w mojej skrzynce pocztowej. Wszelkie następcze-
Prace utworzone w tej grupie są wysyłane do mnie pocztą Inows (a nie bezpośrednio na listę mailingową,
ponieważ te e-maile wracały do ​​mnie ponownie i trafiały do ​​grupy dyskusyjnej, co z kolei
odesłałby je z powrotem na listę i tak dalej, i tak dalej). Stąd kolejna zasada
który wychwytuje te działania następcze i odsyła je do listy mailingowej. Te maile tak
rzeczywiście wrócą, ale reguła _SEEN_ po prostu je usunie.

Na moim komputerze e-maile dla korzeń są do mnie przesyłane. Jednak codziennie, cron Demon
uruchamia pewne procesy w celu przeprowadzenia porządków administracyjnych (rotacja plików dziennika itp.) oraz
przesyła wyniki pocztą elektroniczną. Są one przekierowywane do określonych folderów za pomocą polecenia WRITE,
aby mieć pewność, że nie będą rosły bez ograniczeń. Zwróć uwagę na substytucję makro w dzienniku dziennym
wyjście (w poniedziałki dane wyjściowe są przechowywane w codziennie.1 na przykład).

Następna grupa reguł uniemożliwia systemowi pocztowemu odsyłanie wiadomości e-mail, gdy jestem w trybie
rozwijanie aliasów grupowych. To jest Wyślij maila opcja, którą wyłączyłem na moim komputerze. Opieka jest
podjęto jednak decyzję, aby poczta przychodziła od listonosza, którą otrzymuję jako ślepą wiadomość
Kopiuj.

OSTRZEŻENIE


Tylko w celu ograniczenia obciążenia systemu pierwszej proces pocztowy jest dozwolony
aby uruchomić polecenia. Jeśli nowa poczta nadejdzie, gdy uruchomiony jest inny agent pocztowy, tak się stanie
poczta jest umieszczana w kolejce i będzie przetwarzana później przez główny listonosz.

Z tego samego powodu wiadomości odesłane przez agenta pocztowego są umieszczane w kolejce Wyślij maila, aby uniknąć
koszt przesyłania poczty podczas przetwarzania poleceń.

BEZPIECZEŃSTWO


Najpierw omówię co bezpieczeństwo znaczy tutaj. To robi nie oznaczają bezpieczeństwo systemu przed
ataki intruzów. Jeśli Twój system na to pozwala .Naprzód haczyki i/lub cron zadania do ustalenia
zwykłych użytkowników, wtedy Twój system nie jest w ogóle bezpieczny. Okres. Więc nie zawracamy sobie głowy
bezpieczeństwo na poziomie systemu, ale raczej na poziomie własnego konta, gdzie wszelkiego rodzaju
przechowywane są cenne dane.

Aby uniknąć szkodliwego wtargnięcia za pośrednictwem koni trojańskich, wirus C filtrować odmówi startu, jeśli
plik konfiguracyjny ~/.agent pocztowy lub określony plik reguł można zapisywać na całym świecie, czy nie
własnością użytkownika. Testy te są egzekwowane, nawet jeśli filtrować nie działa w trybie setuid,
ponieważ zagrażają one bezpieczeństwu Twojego konta. The agent pocztowy również wystąpi
niektóre z tych kontroli, w przypadku gdy nie zostaną wywołane poprzez C filtrować.

Rzeczywiście, jeśli ktoś może napisać do twojego ~/.agent pocztowy plik, wtedy będzie mógł z łatwością zmienić Twój
reguły parametr konfiguracyjny, aby wskazywał inny fałszywy plik reguł, a następnie wysłał Ci plik
mail, który uruchomi agenta pocztowego działającego jako Ty. Za pomocą polecenia RUN ten potencjał
intruz może uruchomić dowolne polecenie, korzystając z Twoich uprawnień, i może ustawić konia trojańskiego
późniejsza lektura. Stosując tę ​​samą logikę, plik reguł również musi być ściśle chroniony.

I nic dziwnego, te same zasady obowiązują w przypadku Twojego nowy cmd plik, który służy do opisu
rozszerzone polecenia filtrujące. W przeciwnym razie pozwoliłoby to komuś po cichu przedefiniować a
powszechnie używane standardowe polecenie, takie jak WYJDŹ, a później będziesz mógł przyjąć swoją tożsamość.

Wersje późniejsze niż 3.0 PL44 zawierają ulepszoną (z punktu widzenia bezpieczeństwa) wersję C filtrować
która nie tylko przeprowadzi powyższe kontrole, ale także zapewni, że Perl
wykonywalny i agent pocztowy skrypt, który ma zostać wykonany, nie są luźno chronione (gdy
execsafe jest WŁĄCZONA lub gdy działa z uprawnieniami administratora). Ponadto, jeśli filtrować is
ustawić w swoim .Naprzód zgodnie z opisem na tej stronie podręcznika, będzie mógł sam sprawdzić
bezpieczeństwo i głośno cię ostrzeże, jeśli można przy nim manipulować, co może pokonać wszystko
kontrole bezpieczeństwa.

Mailagent został również rozbudowany tak, aby wszystkie programy uruchamiały się poprzez RUN i znajomych, a także
haki pocztowe, są sprawdzane pod kątem oczywistych wad ochronnych przed faktycznym uruchomieniem. Interpretowane
skrypty (zaczynające się od magicznego tokena #!) i skrypty Perla następujące po magicznym znaku „exec perl
jeśli inkantacja $under_shell" jest specjalnie sprawdzana pod kątem dalszego bezpieczeństwa
tłumacz. Kontrole te przeprowadzane są systematycznie (w terminie execsafe jest WŁĄCZONY lub kiedy
działa z uprawnieniami administratora), nawet jeśli bezpieczne parametr nie został ustawiony na ON. Również,
wszystkie pliki, które wkrótce będą Exec ()ed są sprawdzane przy użyciu tej samej metody rozszerzonego sprawdzania, co gdy
bezpieczne jest WŁĄCZONY (testy własności są jednak pomijane podczas sprawdzania Exec ()-jasność a
plik).

Użyj agenta pocztowego online, korzystając z usług onworks.net


Darmowe serwery i stacje robocze

Pobierz aplikacje Windows i Linux

Komendy systemu Linux

Ad




×
reklama
❤️Zrób zakupy, zarezerwuj lub kup tutaj — bezpłatnie, co pomaga utrzymać bezpłatne usługi.