Đây là lệnh gurgitate-mail có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình mô phỏng trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
gurgitate-mail - bộ lọc thư dễ sử dụng
SYNOPSIS
thư ọc ọc
MÔ TẢ
"gurgitate-mail" là chương trình đọc thư của bạn và lọc nó theo
.gurgitate-rules.rb tập tin trong thư mục chính của bạn. Tệp cấu hình sử dụng cú pháp Ruby
và do đó khá linh hoạt.
Nó thường được gọi thông qua .phía trước tập tin:
"|/path/to/gurgitate-mail"
Hoặc thông qua của bạn .procmailrc tập tin:
: 0:
| /path/to/gurgitate-mail
Ngoài ra, nếu bạn là quản trị viên hệ thống tại trang web của mình hoặc quản trị viên hệ thống của bạn thân thiện, bạn có thể
sử dụng gorgitate-mail làm đại lý chuyển phát địa phương. Đối với hậu tố, đặt
hòm thư_command=/opt/bin/gurgitate-mail
in /etc/postfix/main.cf. Nếu bạn sử dụng bất kỳ MTA nào khác và định cấu hình gurgitate-mail làm
đại lý giao hàng địa phương, xin vui lòng cho tôi biết làm thế nào! Tôi muốn đưa điều này vào tài liệu.
CẤU HÌNH CÁC TẬP TIN
Có ba tệp cấu hình được sử dụng bởi gurgitate-mail: hai tệp toàn hệ thống và tệp
thứ ba, là tệp quy tắc người dùng.
Hai tệp cấu hình toàn hệ thống là /etc/gurgitate-rules và
/etc/gurgitate-rules-default. Chúng được xử lý trước và sau các quy tắc của người dùng,
tương ứng.
/etc/gurgitate-rules được sử dụng để xử lý các nhu cầu lọc trên toàn hệ thống: đặt mặc định
kiểu hộp thư sang Maildir thay vì MBox mặc định, thiết lập thư mục ống đệm, mọi thứ
như thế
Tệp cấu hình người dùng là $HOME/.gurgitate-rules (Hay cách khác,
$HOME/.gurgitate-rules.rb. Hoặc làm việc). Bạn đặt quy tắc của riêng bạn ở đây. Nếu người dùng
tệp cấu hình không gặp phải sự "trả lại" trong quá trình xử lý, thì phần bổ sung
quy tắc có trong /etc/gurgitate-rules-default đang chạy. Nếu điều đó cũng không trở lại,
sau đó thư sẽ được lưu vào vị trí bộ đệm thư mặc định.
Nếu tùy chọn "-f" được sử dụng trên dòng lệnh thì tệp được chỉ định sẽ được sử dụng và
các quy tắc mặc định sẽ không. Tùy chọn "-f" có thể được sử dụng nhiều lần:
gurgitate-mail -f quy tắc kiểm tra -f quy tắc bổ sung
CẤU HÌNH THÔNG SỐ
Có một số tham số mà bạn có thể đặt để thay đổi cách gửi thư
cư xử. Bạn đặt tham số cấu hình bằng cách nói, ví dụ:
gửi thư "/ usr / sbin / sendmail"
trong đó đặt tham số "sendmail" thành "/ usr / sbin / sendmail".
thư mục
Thư mục bạn muốn đặt thư mục thư vào. Giá trị mặc định này là $HOME/Mail.
tệp nhật ký
Thông điệp tường trình của Gurgitate-mail mà bạn đã đến. Vị trí tiêu chuẩn cho
đây là $HOME/.gurgitate.log
gửi thư
Đường dẫn đầy đủ đến chương trình sendmail, được sử dụng để gửi thư. Đây có thể là bất kỳ chương trình nào
nó lấy tham số là danh sách các địa chỉ để gửi thư đến và lấy
một tin nhắn thư trên đầu vào tiêu chuẩn.
thư mục nhà
Đường dẫn đầy đủ của thư mục chính của bạn. Điều này mặc định cho bất cứ điều gì ngôi nhà thực tế của bạn
thư mục là
ống chỉ
Đường dẫn đến các cuộn thư của hệ thống. Điều này mặc định là "/ var / spool / mail".
Trên hệ thống Maildir, giá trị này phải được đặt giống như "homedir".
tập tin cuộn
Thành phần tệp bộ đệm thư của đường dẫn đầy đủ trong bộ đệm thư của bạn. Nói chung đây là
tên người dùng của bạn. Người dùng Maildir nên đặt giá trị này thành "Maildir".
kiểu thư mục
Phong cách của các thư mục bạn thích. Đây có thể là (tại thời điểm này) MBox hoặc Maildir.
LỌC QUY TẮC
Các quy tắc lọc là một chuỗi các câu lệnh Ruby, với các phương thức và biến sau
có sẵn:
Biến
từ Phần này chứa địa chỉ phong bì "từ" của thư email. (Lưu ý rằng điều này
không nhất thiết phải giống với nội dung của tiêu đề "Từ:")
tiêu đề
Đây là một đối tượng chứa tiêu đề của tin nhắn. Có một số phương pháp
đi kèm với đối tượng này:
body Phần này chứa nội dung của email. Thực sự cho đến nay vẫn chưa có gì
điều thú vị mà bạn có thể làm với cái này, ngoài việc gán cho nó; bạn có thể viết lại
nội dung của email theo cách này. Việc xử lý các tệp đính kèm được lên kế hoạch cho một
việc phát hành "gurgitate-mail" trong tương lai.
thư mục
Thư mục chứa các thư mục được sử dụng bởi phương thức "lưu" khi bạn chỉ định
một thư mục là "=thư mục" (như Elm). Mặc định là "$HOME/Mail".
thư mục nhà
Thư mục nhà của bạn. Chỉ đọc.
tệp nhật ký
Vị trí của tệp nhật ký "gurgitate-mail". Nếu được đặt thành "nil", thì không có ghi nhật ký nào
xong. Mặc định là "$HOME/.gurgitate.log".
gửi thư
Vị trí của chương trình "sendmail". Được sử dụng theo phương pháp "chuyển tiếp". Mặc định là
"/ usr / lib / sendmail".
tập tin cuộn
Vị trí của ống cuộn thư. Chỉ đọc.
Phương pháp
trận đấu(tên), biểu thức chính quy)
Trả về "true" nếu tiêu đề "name" khớp với biểu thức chính quy "regex". Nếu như
"name" là một mảng các tên tiêu đề, sau đó nó trả về true nếu ít nhất một trong các tên
tiêu đề phù hợp. Hữu ích cho việc kiểm tra xem cả hai tiêu đề "To:" và "Cc:" có khớp nhau hay không.
from Trả về địa chỉ phong bì "từ" của email. Lưu ý rằng điều này giống nhau
là "từ" trần trụi.
Trả về một HeaderBag (một loại mảng) có nội dung là "To" và "Cc"
tiêu đề.
to_s Theo quy ước của Ruby, trả về tất cả các tiêu đề dưới dạng đối tượng "Chuỗi".
tiết kiệm(hộp thư)
Thao tác này sẽ lưu tin nhắn vào hộp thư. Bạn có thể chỉ định hộp thư dưới dạng một từ có =
ký tên vào trước nó, trong trường hợp đó nó sẽ đặt nó vào "maildir". Nếu bạn không sử dụng
=tên định dạng, thì bạn cần chỉ định tên đường dẫn tuyệt đối. Nếu nó không thể viết
vào tập tin mà bạn yêu cầu, nó sẽ cố gắng ghi nó vào "spoolfile".
chuyển tiếp (địa chỉ)
Điều này chuyển tiếp thư email đến một địa chỉ email khác.
ống (chương trình)
Điều này truyền tải thông điệp thông qua "chương trình". "pipe" trả về mã thoát của
chương trình mà thông điệp được truyền qua.
bộ lọc (chương trình)
Điều này truyền thông điệp qua "chương trình" và trả về một đối tượng Gurgitate mới
chứa thư đã được lọc. (Điều này rất hữu ích cho các bộ lọc bên ngoài sửa đổi email
chẳng hạn như SpamAssassin, thêm tiêu đề điểm thư rác.)
Bạn cũng có thể nói
bộ lọc (chương trình) làm
# mã ở đây
cuối
và nó mang lại đối tượng Gurgitate mới được tạo cho khối.
tiêu đề
Điều này trả về các tiêu đề như một đối tượng của riêng chúng. Đối tượng này có các phương thức riêng:
tiêu đề[*tên tiêu đề]
Điều này trả về HeaderBag (một lớp con của mảng) chứa các tiêu đề bạn đã yêu cầu
vì. Sau đó, bạn có thể sử dụng toán tử =~ trên kết quả này để khớp với biểu thức chính quy RHS
với mọi thứ trong HeaderBag.
Bạn có thể thay đổi giá trị của tiêu đề bằng "headers[name]=newvalue".
headers.match(tên, biểu thức chính quy)
So khớp tiêu đề với tên "name" với biểu thức chính quy. Điều này cũng giống như
tiêu đề [tên] =~ /regex/.
headers.matches(tên, biểu thức chính quy)
Khớp các tiêu đề có tên "tên" với biểu thức chính quy. Cái này giống nhau
làm tiêu đề[*names] =~ /regex/.
tiêu đề.from
Trả lại phong bì từ. Bạn có thể thay đổi điều này bằng "headers.from=newaddress"
quá.
trở lại
Điều này báo cho "gurgitate-mail" ngừng xử lý email. Nếu bạn không sử dụng
"return", thì "gurgitate-mail" sẽ tiếp tục xử lý lại cùng một thư với
quy tắc tiếp theo. Nếu không có sự "trở lại" ở cuối gurgitate-rules.rbthì
"gurgitate-mail" sẽ lưu email vào bộ đệm thư thông thường.
đăng nhập(thông điệp)
Điều này viết một thông điệp tường trình vào tệp nhật ký.
ĐƠN GIẢN VÍ DỤ
Dưới đây là một số ví dụ về quy tắc "thư gurgitate" kèm theo giải thích:
nếu từ =~ /ebay.com/ thì lưu("=ebay"); trở lại; kết thúc
Bất kỳ email nào từ eBay (ví dụ: thông báo kết thúc phiên đấu giá tự động và trả giá cao hơn
thông báo) được đưa vào thư mục "ebay".
nếu từ =~ /nguồn gốc@/ sau đó lưu("=root"); trở lại; kết thúc
Bất kỳ email nào từ root (tại bất kỳ máy chủ nào) đều được đưa vào một thư mục đặc biệt. Hữu ích cho quản trị viên hệ thống
giám sát email crontab.
nếu headers.matches(["To","Cc"],"webmaster@") thì
lưu ("= quản trị trang web")
trở lại
cuối
Bất kỳ email nào có dòng To: hoặc Cc: của "sysadmin" đều được lưu vào thư mục "sysadmin". Hữu ích
dành cho những người có nhiều tài khoản vai trò được chuyển hướng đến địa chỉ của họ.
nếu headers["Subject"] =~ /\[SPAM\]/ thì
lưu("=thư rác")
trở lại
cuối
Đây là một cú pháp khác để khớp các mẫu với tiêu đề. Bạn cũng có thể phù hợp
nhiều tiêu đề trong dấu ngoặc vuông.
if headers["Subject","Keywords"] =~ /a bad word/ then
save("=chửi thề")
trở lại
cuối
Tìm kiếm "một từ xấu" trong tiêu đề Chủ đề và Từ khóa, và nếu có, hãy lưu
email trong thư mục "chửi thề".
if headers.matches(["To","Cc"],"gửi thư-list@example.com") sau đó
pipe("|rcvstore +mailing-list")
trở lại
cuối
Mọi email tới danh sách gửi thư đều được chuyển qua "rcvstore" để lưu trữ vào thư mục MH.
Đó
headers.matches(["To","Cc"],/regex/)
thành ngữ xảy ra thường xuyên đến mức có một cách viết tắt cho nó:
nếu để =~ /gửi thư-list@example.com/ sau đó
pipe("|rcvstore +mailing-list")
trở lại
cuối
Đưa thư vào danh sách gửi thư thông qua "rcvstore".
ADVANCED VÍ DỤ
Dưới đây là một số ví dụ thông minh hơn một chút để cung cấp cho bạn ý tưởng về những gì bạn có thể làm với
"thư ợ". Giả sử bạn có danh sách email trắng trong một tệp có tên
$HOME/.friends, nhờ đó bạn có thể xác định liệu một số email có khả năng là thư rác hay không.
Sau đó, nếu ai đó trong danh sách trắng gửi email cho bạn thì bạn sẽ tự động lưu email đó vào
thư mục "hộp thư đến":
bạn bè=homedir+"/.friends"
nếu FileTest.exists?(friends) và FileTest.readable?(friends) thì
File.new(friends).mỗi người làm |friend|
nếu từ =~friend.chomp thì
log "Thư từ bạn bè "+friend.chomp
lưu("=hộp thư đến")
trở lại
cuối
cuối
cuối
Được rồi, nếu ai đó gửi email cho bạn và nó được gửi riêng cho bạn (và ồ lên-
thư chưa bắt được nó ở dạng khác), thì đó có thể là thư rác hoặc không: đặt nó vào
vào thư mục "màu xám":
my_addresses= [ /me@example\.com/i,
/me@example\.org/i,
/me@example\.net/i]; # Tôi có ba địa chỉ email
my_addresses.mỗi do |addr|
nếu headers.matches(["To","Cc"],addr) thì
save("=có thể-không-spam")
trở lại
cuối
cuối
Và sau đó, nếu nó không phải từ người bạn biết và nó không được gửi đến email của bạn
địa chỉ nào đó, thì có thể sẽ lưu lại khi cho rằng đó là thư rác:
lưu("=thư rác")
trở lại
Tuy nhiên, điều này có thể được cải thiện bằng cách sử dụng bộ lọc Bayesian; ví dụ như của Eric Raymond
chương trình bogofilter (http://bogofilter.sourceforge.net) có thể được huấn luyện tự động và
được sử dụng với sự trợ giúp của sự phân biệt trắng/xám/đen. Lấy ví dụ trên, tôi sẽ
điều chỉnh nó bằng cách thêm các lệnh gọi vào bogofilter:
bạn bè=homedir+"/.friends"
nếu FileTest.exists?(friends) và FileTest.readable?(friends) thì
File.new(friends).mỗi người làm |friend|
nếu từ =~friend.chomp thì
log "Thư từ bạn bè "+friend.chomp
pipe("bogofilter -h") # <-- DÒNG ĐƯỢC THÊM TẠI ĐÂY
lưu("=hộp thư đến")
trở lại
cuối
cuối
cuối
"bogofilter -h" huấn luyện bogofilter rằng thư từ những người thuộc danh sách trắng sẽ không được gửi
bị coi là thư rác. Được rồi, ở cuối .gurgitate-rules, hãy thay đổi
lưu("=thư rác")
trở lại
đến
lưu("=thư rác")
pipe("bogofilter -s")
trở lại
Điều này huấn luyện "bogofilter" rằng mọi thứ không vượt qua được phần còn lại của bộ lọc sẽ bị loại bỏ.
bị coi là thư rác. Bây giờ là phần thú vị: Thay đổi bit giữa các bit này để sử dụng
"bogofilter" để quyết định xem email có bị coi là thư rác hay không:
my_addresses= [ /me@example\.com/i,
/me@example\.org/i,
/me@example\.net/i]; # Tôi có ba địa chỉ email
my_addresses.mỗi do |addr|
nếu headers.matches(["To","Cc"],addr) thì
if pipe("bogofilter")==1
sau đó
log("bogofilter nghi ngờ đó có thể không phải là thư rác")
save("=có thể-không-spam")
khác
log("bogofilter cho rằng đó có thể là thư rác")
lưu("=thư rác")
cuối
trở lại
cuối
cuối
"bogofilter" có mã thoát là "1" nếu nó cho rằng thư không phải là thư rác và "0" nếu nó
cho rằng tin nhắn đó là thư rác.
Hy vọng rằng điều này sẽ cung cấp cho bạn ý tưởng về những thứ bạn có thể sử dụng
"bogofilter" cho.
Sử dụng gorgitate-mail trực tuyến bằng dịch vụ onworks.net