Postfix, SPF, Greylist, RBL , tarpit, Amavisd, ClamAV, SpamAssassin, Razor, Pyzor, DCC, FuzzyOCR

Boj se spamem je velice úmornou záležitostí a vyřešení uvedeného problému ještě nějakou dobu potrvá. Mezi řešení spadá velké množství systémů, ať se jedná o různé seznamy, způsoby komunikace, filtrování pošty na bázi histogramů četnosti slov a podobné. Mimo ucelených systémů je možné použít i jednodušší a vcelku účinné řešení pomocí kombinace několika základních technik, popsaných níže. Většina postupů je posbíraná po internetu, nejvíce za stránek Section 6, PurpleHat a Postfix. Pro úvod je vhodné hrubé seznámení s jednotlivými kroky SMTP komunikace - tedy odesílání e-mailu:

Základ SMTP komunikace
Klient: Server:
Připojení 220 Helo název a případně typ serveru
HELO client-hostname 250 úvodní definice spojení
MAIL FROM: 250 OK
RCPT TO: (Může být několikrát opakována) 250 OK
DATA 354 End data with <CRLF>.<CRLF>
(Zasílání těla e-mailu) (nedělá nic s výjimkou vyčkávání na <CRLF>.<CRLF>)
. 250 OK, accepted for delivery (nebo jiný text potvrzující doručení)
QUIT 221 Bye

Při komunikaci se používají kódy ze trojice čísel. Pro hrubou orientaci je důležité znát základní význam:
2xx - vše v pořádku
4xx - dočasný problém
5xx - stálý problém



SPF (Sender Policy Framework)
Sender policy framework je TXT záznam v DNS, který uvádí seznam oprávněných serverů pro odeslání pošty. Jiné než oprávněné servery jsou ignorovány. Pokud se používá SpamAssasin, není potřeba tento software instalovat samostatně. V případě nedostatečné znalosti syntaxe lze na webových stránkách Open SPF najít průvodce pro vytvoření těchto záznamů. Výsledek pak vypadá například následujícím způsobem:

v=spf1 ip4:1.2.3.4 a mx:firma.cz ~all

v=spf - identifikace SPF záznamu
ip4:1.2.3.4 - povolená IP adresa odesílatele
mx:firma.cz - povolený DNS záznam odesílatele
~all - všechny ostatní DNS záznamy odesílatele mohou také posílat poštu

1) Instalace SPF plugin:
portinstall postfix-policyd-spf

2) Při kontrole pomocí pkg_info | grep -i spf by mělo být v package přidáno:
libspf2-x.y.z
p5-Mail-SPF-x.y.z
postfix-policyd-spf-x.y.z

3) Pro funkcionalitu v postfixu je nutné upravit nejprve soubor /usr/local/etc/postfix/master.cf:
policy unix -     n     n     -     -     spawn
   user=nobody argv=/usr/local/sbin/postfix-policyd-spf

4) a následně ještě soubor /usr/local/etc/postfix/main.cf:
smtpd_recipient_restrictions =
   ...
   reject_unknown_sender_domain
   reject_unauth_destination
   check_policy_service unix:private/policy
   ...




Greylist
Greylist vychází z postupu většiny spammerů použít neznámý mailserver, rychle vychrlit stovky e-mailů a odpojit se. Ve většině případů toto připojení trvá pouze minuty, pokud se server příjemce tváří jako nedostupný, SPAM nemusí dorazit. Standardní doba odpovědi (znovu opakování odeslání e-mailu) je nastavena na 300 sec., tedy 5 minut. Z hlediska uživatele to není tak dlouhá doba, takže je schopen tuto dobu počkat. Navíc, postgray umožňuje definovat vlastní black a whitelisty.

1) Instalace postgrey plugin:
portinstall postgrey

2) Pro funkcionalitu v postfixu je nutné upravit nejprve soubor /usr/local/etc/postfix/main.cf:
smtpd_recipient_restrictions =
   ...
   permit_mynetworks
   reject_unauth_destination
   check_policy_service inet:127.0.0.1:10023
   ...
3) Dále pak povolit start postgrey daemonu v souboru /etc/rc.conf:
postgrey_enable="YES"

4) a nastartovat uvedený daemon pomocí:
/usr/local/etc/rc.d/postgrey start



Black list
Blacklisty jsou další z metod ověření odesílatele. Pokud je odesílatel na seznamu podezřelých serverů, serverů s otevřeným relay (přeposíláním pošty přes tento server i pro neautorizovaného uživatele), nedodržuje základní standardy nebo pouze rozesílá SPAM, velice pravděpodobně se brzy ocitne na jednom z níže uvedených seznamů. Tyto seznamy občas bývají dvousečnou zbraní, ale jejich účinnost je vysoká. Konfigurace blacklistu pak může vypadat následovně, jedná se pouze o úpravu souboru /usr/local/etc/postfix/main.cf:
smtpd_client_restrictions =
   ...
   reject_rbl_client bl.spamcop.net
   reject_rbl_client sbl-xbl.spamhaus.org
   reject_rbl_client combined.njabl.org
   reject_rbl_client list.dsbl.org
   reject_rbl_client cbl.abuseat.org
   reject_rbl_client whois.rfc-ignorant.org
   reject_rbl_client dialups.visi.com
   ...

Vlastní blacklist/whitelist je možné si vytvořit nastavením parametrů check_client/sender/recipient/hello_access v souboru /usr/local/etc/postfix/main.cf. Umožní omezení příjmu či odesílání e-mailů na adresy nebo domény uvedené v seznamu. Pokud se používá SpamAssassin, není nutné nastavovat RBL na Postfixu, stačí toto provést v SpamAssasinu (viz níže). Pro vlastní nastavení je nutné velice dobře vědět, pro které fáze komunikace se jednotlivé hashe budou používat! Ukázka nastavení je zde:
smtpd_client_restrictions =
   ...
   check_client_access hash:/usr/local/etc/postfix/bwlist
smtpd_sender_restrictions =
   ...
   check_sender_access hash:/usr/local/etc/postfix/bwlist
smtpd_helo_restrictions =
   ...
   check_helo_access hash:/usr/local/etc/postfix/bwlist
smtpd_recipient_restrictions =
   ...
   check_recipient_access hash:/usr/local/etc/postfix/bwlist


Restrikce
Parametr Omezení pro SMTP ...
smtpd_client_restrictions klienta (omezení pro odesílání pošty klientem)
smtpd_data_restrictions SMTP DATA (start odesílání dat)
smtpd_end_of_data_restrictions SMTP END-OF-DATA (konec odesílání dat, <CRLF>.<CRLF>)
smtpd_etrn_restrictions SMTP ETRN (stahování doménového koše)
smtpd_helo_restrictions SMTP HELO/EHLO (navazování spojení s dalšími poštovními servery)
smtpd_recipient_restrictions SMTP RCPT TO (komu se posílá pošta)
smtpd_sender_restrictions SMTP MAIL FROM (identifikace odesílajícího serveru)
smtpd_restriction_classes vytváření skupin omezení

Vlastní zdrojový blacklist/whitelist je textový soubor, obsahující na každém řádku doménu nebo adresu s parametrem určujícím chování. Hash soubor se z něj vytvoří pomocí příkazu postmap bwlist. Formát souboru je uveden na příkladu zde:
duveryhodnadomena.cz OK
znamy@znamemisto.cz OK
neduveryhodnadomena.cz REJECT
spammery@neznamemisto.cz REJECT




Tarpit
Tarpit omezuje možnosti vyhledávání účtů pomocí botnetů. Jedná se o malou úpravu v souboru /usr/local/etc/postfix/main.cf zajišťující nastavení pro limity chyb při přístupu dalších serverů:
smtpd_error_sleep_time = 60
smtpd_soft_error_limit = 60
smtpd_hard_error_limit = 10




AMaViS
AMaViS (A Mail Virus Scanner) slouží pro analýzu e-mailů na přítomnost nevhodného obsahu. Mimo své schopnosti spolupracovat s antivirovými programy umožňuje volat i další software, určený pro Bayes analýzy obsahu (vážení statistik slov), na kontrolu pošty pomocí kontrolních součtů z databází spamu a další. Instalace a konfigurace tohoto software je popsána dále.

1) Instalace vlastních package:
portinstall amavisd-new amavis-stats

2) Po instalaci je nutné se rozhodnout nad způsobem diagnostiky e-mailů. V zásadě jsou dvě možnosti:
-o content_filter=smtp-amavis:[127.0.0.1]:port pro post-queue filtrování.
-o smtpd_proxy_filter=smtp-amavis:[127.0.0.1]:port pro pre-queue filtrování.
První možnost je výhodnější i z hlediska nasazení, při nevhodné konfiguraci jsou e-maily uloženy ve frontě a neztratí se. Prozatím tento parametr není vhodné aktivovat, dokud nebude nastavený a funkční zbytek systému. Pokud tyto parametry už do konfiguračního souboru vložíte, je vhodné je zakomentovat. Osobně doporučuji následující (prozatím zakomentovaný řádek):
# -o content_filter=smtp-amavis:[127.0.0.1]:10024

3) Úpravou konfiguračního souboru /usr/local/etc/postfix/master.cf se zajistí možnost předávat e-maily AMaViSu a jejich následné vyhodnocení a navrácení. První úprava je na začátku zpravidla v této formě:
ext_IP_adresa:smtp      inet n - n - - smtpd
        -o content_filter=smtp-amavis:[127.0.0.1]:10024
int_IP_adresa:smtp      inet n - n - - smtpd
        -o smtpd_client_restrictions=permit_mynetworks,reject
127.0.0.1:smtp      inet n - n - - smtpd
        -o smtpd_client_restrictions=permit_mynetworks,reject


nebo jenom zkráceně:
smtp inet n - n - - smtpd
        -o content_filter=smtp-amavis:[127.0.0.1]:10024


Na konec uvedeného souboru je pak nutné přidat nastavení, umožňující zpětně přijmout e-mail předaný AMaViSu Postfixem:
smtp-amavis unix - - - - 2 smtp
    -o smtp_data_done_timeout=1200
    -o disable_dns_lookups=yes
127.0.0.1:10025 inet n - - - - smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes


4) Dalším krokem je úprava souboru /etc/mail/aliases nebo /usr/local/etc/postfix/aliases (záleží na nastavení postfixu) tak, aby obsahoval následující řádek:
virusalert: root

Příkazen newaliases se změny aliasů promítnou do aktuální hash databáze a AMaViS je možné poprvé nastartovat. Start je nutný pro ověření, zda jsou k dispozici všechny potřebné Perl knihovny a vynutí se restartem Postfixu.
/usr/local/etc/rc.d/postfix restart

Pokud vše naběhlo korektně, sockstat zobrazí naslouchající AMaViS na portu 10025.
sockstat | grep master | grep 25

5) Konfigurační soubor AMaViSu se nachází na /usr/local/etc/amavisd.conf. Po instalaci zde tento soubor neexistuje, ale existují zde jiné, předkonfigurované soubory, například amavisd.conf-dist. Tento je možný vzít jako template a nastavit v něm následující základní parametry:
$mydomain = 'example.com';
$MYHOME = '/var/amavis';
$TEMPBASE = "$MYHOME/tmp";
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;
$insert_received_line = 0;
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_BOUNCE;
$final_spam_destiny = D_DISCARD;
$QUARANTINEDIR = '$MYHOME/virusmails';


zkontrolovat existenci výše uvedených adresářů v proměnných a podle nastavení using smtpd_proxy_filter(0) / content_filter(1) nastavit hodnotu pro proměnnou $insert_received_line = x;

6) Po aktivaci příslušných modulů je možné odstranit komentáře u řádek, zmíněných v bodě 2. Jedná se o způsob a port pro zasílání e-mailů na analýzu pomocí AMaViS jednotlivým, dále zmíněným modulům - ClamAV, Razor, SpamAssassin, případně další jako je DCC, Bayes atd. Konfigurace jednotlivých těchto modulů bude popsána dále.

Poznámka: Doporučuji ještě ověřit spuštění amavisd pomocí příkazu /usr/local/etc/rc.d/amavisd start, bude potřeba povolit jeho spuštění klauzulí amavisd_enable="YES" v souboru /etc/rc.conf. Pokud tento program zahlásí problémy s kompilací a spuštění modulu:
Starting amavisd.
ERROR: MISSING REQUIRED BASIC MODULES:
   Compress::Zlib
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line
lineno.
AMaViS nebude pracovat a je nutné provést následující opravu databáze portů (a rekompilaci perl modulů):
mv /var/db/pkg/pkgdb.db /var/db/pkg/pkgdb.db.old && pkgdb -u && portupgrade -f p5*
pkgdb -F && portupgrade -f p5*
pkg_info | grep ^p5- | awk '{print $1}' | xargs portupgrade -f


Pokud nepomůže tato možnost jako druhá je spuštění příkazu perl-after-upgrade -f

Poslední možností je pak smazání kompletního obsahu adresáře /usr/local/lib/perl5 a vygenerování nejenom vlastního Perlu, ale i jednotlivých knihoven. Pokud bych parafrázoval klasiky:
"Jak přízemní" ... "Ale účinné" !

Další možnou chybou jsou zase nenainstalované moduly, které se hlásí chybou:
(!)_DIE: Can't locate Tie/Cache.pm in @INC (@INC contains: .. /usr/local/etc/mail/spamassassin lib /usr/local/lib/perl5/5.8.9/BSDPAN /usr/local/lib/perl5/site_perl/5.8.9/mach /usr/local/lib/perl5/site_perl/5.8.9 /usr/local/lib/perl5/5.8.9/mach /usr/local/lib/perl5/5.8.9) at (eval 711) line 1.\nBEGIN failed--compilation aborted at (eval 711) line 1.

Tuto chybu lze ověřit spuštěním /usr/local/sbin/amavisd -u amavis debug, pokud je příčinou skutečně tato chybová hláška, stačí doinstalovat:
portinstall p5-Tie-DBI p5-Tie-Cache p5-IO-TieCombine p5-Tie-Hash-Indexed p5-Tie-Hash-Regex

7) Nastavit spouštění statistik AMaViS v cronu. Po zadání příkazucrontab -e je nutné vložit následující řádek.
*/5 * * * * amavis /usr/local/sbin/amavis-stats /var/log/maillog 2>&1 >/dev/null



ClamAV
ClamAV Antivirus je open source antivirus-toolkit navržený pro kontrolu e-mailů. Přesnější specifikaci je možné najít na stránkách projektu. Je dostatečně známý, takže není nutné jej detailně popisovat.

1) Instalace ClamAV je vcelku jednoduchá:
portinstall clamav p5-File-Scan-ClamAV
2) Konfigurace ClamAV a jeho spuštění se provádí následujícím způsobem. Úpravou konfiguračního souboru /usr/local/etc/freshclam.conf sloužícího pro aktualizaci ClamAV (ukázka):
DatabaseDirectory /var/db/clamav
DatabaseMirror database.clamav.net
DatabaseOwner clamav
HTTPProxyPort 3128
HTTPProxyServer proxy.local
LocalIPAddress 192.168.1.1
NotifyClamd true
PidFile false
UpdateLogFile /var/log/clamav/freshclam.log


Dále konfigurací vlastního antiviru, kde je potřeba přidat uživatele clamav do skupiny amavis a upravit nastavení. Plná cesta k souboru s nastaveními je /usr/local/etc/clamd.conf(ukázka):
AllowSupplementaryGroups true
DatabaseDirectory /var/db/clamav
FixStaleSocket true
LocalSocket /var/run/clamav/clamd
LogFile /var/log/clamav/clamd.log
PidFile /var/run/clamav/clamd.pid
ScanMail true
User clamav


Povolení spouštění ClamAV po startu systému znamená přidání níže uvedených řádek do souboru /etc/rc.conf:
#ClamAV - Antivirus
clamav_clamd_enable="YES"
clamav_freshclam_enable="YES"


Vlastní spuštění je pak možné pomocí sekvence příkazů:
/usr/local/etc/rc.d/clamav-clamd start
/usr/local/etc/rc.d/clamav-freshclam start

3) Změnit konfiguraci AMaViS daemona následujícím způsobem. Nejprve spustit:
cd /var/amavis
chown -R vscan:vscan tmp


Následně upravit konfigurační soubor /usr/local/etc/amavisd.conf, kde je nutné odkomentovat volání ClamAV a nastavit správně cesty:
@av_scanners = (
### http : //clamav.elektrapro.com/
['Clam Antivirus-clamd',
   \&ask_daemon, ["CONTSCAN {}\n", '
/socketpath'],
   qr/\bOK$/, qr/\bFOUND$/,
   qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
);


Kde >/socketpath může mít následující podobu:
/var/amavis/clamd - cesta uvedená v AMaViS
/var/run/clamav/clamd - standardní konfigurační soubor ClamAV

V neposlední řadě je nutné upravit soubor /etc/group a přidat do skupiny mail uživatele vscan a clamav.



Razor

Vipul's Razor je distribuovaná síť pro detekci a filtrování spamu. Díky velkému množství zapojených počítačů je možné nové nevyžádané e-maily rychle a účinně blokovat. Používá katalog spamu, podle kterého se rozlišuje zda tento e-mail je vyžádaný či ne.

1) Instalace razoru je zase vcelku jednoduchá. Stačí spustit příkaz:
portinstall razor-agents

2) Vlastní konfigurace je zde popsaná ve formě příkazů. Používaný uživatele vscan:vscan by měl mít svůj adresář, shell /usr/sbin/nologin.
cd /var/amavis
mkdir tmp .razor
chown -R vscan:vscan .razor tmp
su - vscan
razor-admin -create
razor-admin -discover
razor-admin -register -user postmaster@domena.cz


Tím je konfigurace Razoru dokončena, nyní je nutné ho připojit k SpamAssassinu.



Pyzor

Pyzor je další distribuovaná síť pro detekci a filtrování spamu, využívající kontrolních součtů..

1) Instalace pyzoru je zase vcelku jednoduchá. Stačí spustit příkaz:
portinstall pyzor

2) Vlastní konfigurace se provádí zapojením plug-in modulu do SpamAssasinu, připravená konfigurace s tím počítá.



FuzzyOCR

FuzzyOCR je plugin do prorgamu SpamAssassin, umožňující detekci obrázkových spamů. Používá technologii OCR a vlastní text z obrázku poté předává na analýzu. Postup instalace je jednoduchý:
portinstall p5-FuzzyOcr tesseract xpdf
cp /usr/local/share/examples/FuzzyOcr/FuzzyOcr.cf /usr/local/etc/mail/spamassassin
cp /usr/local/share/examples/FuzzyOcr/FuzzyOcr.scansets /usr/local/etc/mail/spamassassin
cp /usr/local/share/examples/FuzzyOcr/FuzzyOcr.words /usr/local/etc/mail/spamassassin
cp /usr/local/share/examples/FuzzyOcr/FuzzyOcr.preps /usr/local/etc/mail/spamassassin


Poté je program nainstalován a připraven k použití.




DCC

Distributed Checksum Clearinghouses je další distribuovaná síť pro obranu proti spamu. Podobně jako Razor provádí katalogizaci spamu, na rozdíl od něj ale nepoužívá vyhledávání řetězců, ale kontrolní součty nad tělem e-mailu.

Instalace:
portinstall dcc dcc-dccd

Konfigurace systému je trochu náročnější kvůli volbě řešení. DCC je možné provozovat jak samostatně, s funkcionalitou obdobnou jako má AMaViS daemon, tak ve forme příkazů spouštěných SmapAssasinem. DCC filtr nenahrazuje AMaViS, jedná se pouze o jeho jednoúčelové nahrazení. Konfiguraci je nutné začít minimálně nastavením filtrů, povolením UDP komunikace na portu 6277 (příklad pro pf.conf):
pass out quick on $ext_if proto udp to port { 6277 } keep state # DCC Traffic

Vlastní konfigurační soubory pro DCC se nacházejí v adresáři /usr/local/dcc, patrně nejdůležitější je základní konfigurace v souboru dcc.conf.

- Pro konfiguraci závislou na AMaViS je nutné provést následující kroky:
V souboru /etc/rc.conf povolit spouštění DCC Interface daemon (SpamAssasin nebude spouštět samostatný filtr pro každý příchozí e-mail):
dccifd_enable="YES"
a v souboru /usr/local/dcc/dcc.conf pak povolit:
DCCIFD_ENABLE=on
a nakonec v konfiguračním souboru SpamAssassinu /usr/local/etc/mail/spamassassin/local.conf povolit:
use_dcc 1

- Pro samostatnou konfiguraci je nutné provést následující kdoky:
V souboru /usr/local/dcc/dcc.conf je nutné nastavit:     DCCIFD_ENABLE=on
    DCCIFD_ARGS="-p 127.0.0.1,10025,127.0.0.1/32 -o 127.0.0.1,10026


A v souboru /usr/local/etc/postfix/master.cf je nutné přidat konfigurační řetězce obdobné pro volání AMaViS:   smtp inet n - n - - smtpd
    -o smtpd_proxy_filter=127.0.0.1:10025
   127.0.0.1:10026 inet n - n - - smtpd
    -o smtpd_authorized_xforward_hosts=127.0.0.0/8
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=
    -o mynetworks=127.0.0.0/8
    -o receive


Více informací lze najít v DCC FAQ.
Pozor: Není vhodné používat dohromady standalone konfiguraci s funkcionalitou filtru pro AMaViS. Pokud přeci jen je to nějakým způsobem možné, popsaná konfigurace takto nefunguje.



SpamAssassin
SpamAssassin je patrně nejznámějším opensource produktem pro likvidaci spamu. Je napsaný v jazyce Perl a nabízí velké množství konfigurovatelných testů pro identifikaci zda se jedná o oprávněný nebo nevyžádaný e-mail.

1) Instalace z portů:
portinstall p5-Mail-SpamAssassin p5-Net-DNSBL-MultiDaemon p5-Net-DNSBL-Statistics p5-Digest-Hashcash p5-Mail-SPF re2c

2) Po instalaci je nutné SpamAssassin nastavit. Nejprve se vytvoří požadovaná adresářová struktura:
cd /var/amavis
mkdir tmp .spamassassin
touch .spamassassin/user_prefs
chown -R vscan:vscan .spamassassin tmp


3) Následně je nutné upravit dodávanou konfiguraci v adresári /usr/local/etc/mail/spamassassin. Jedná se o soubor local.cf, který je možné vytvořit pouhým překopírováním souboru local.cf.sample. Tento soubor je možné upravit podle požadavků, ale standardní obsah tohoto souboru postačuje.

4) Stáhnout pravidla z Jenifer's Sets a uložit je do adresáře /usr/local/etc/mail/spamassassin.

5) Nastavit možnost učení Bayes filtrů z předem definovaných mailboxů obsahujících spam (nevyžádanou poštu) a ham (korektní e-maily). Následující nastavení je pro uživatele, kteří mají v mailboxu složku spam:
sa-compile
sa-learn --spam --mbox -p /var/amavis/.spamassassin/user_prefs ~/Mail/spam
sa-learn --ham --mbox -p /var/amavis/.spamassassin/user_prefs ~/Mail/mbox
sa-learn --rebuild -p /var/amavis/.spamassassin/user_prefs
Pokud je k dispozici uživatel obsahující pouze spam/ham, je možné použít jinou sadu příkazů:
sa-learn --showdots --spam /var/mail/spam
sa-learn --showdots --ham /var/mail/ham
sa-learn --sync

Pokud se objeví v případě kompilace chyby, je nutné použít příkaz:
spamassassin --lint --debug
který umožní tyto chyby diagnostikovat a odstranit. Bohužel, jejich hledání a odstraňování je nad rámec tohoto popisu.



Poznámky

Doporučuji před instalací striktně zarovnat pomocí portversion / portupgrade jednotlivé porty a ověřit správný stav databáze portů pomocí pkgdb -F.

Pokud dojde k situaci, že v průběhu konfigurace některá z Perl aplikací nedokáže najít komponenty, jednotlivé komponenty v portech je možné vygrepovat pomocí:
echo /usr/ports/*/p5* | tr " " "\n" | grep komponenta

V případě, že tento postup nepomůže, zbývá program cpan. Při prvním spuštění si vytvoří konfiguraci přístupu na CPAN.org, poté je nutné provést automatický build databáze Perl modulů a upgrade případně instalaci chybějících. Přesný postup pro instalaci lze najít na stránce s manuálním postupem, nebo na stránce využívající modul CPAN.

Powered by Drupal - Design by artinet