/usr/share/irssi/scripts/mailcheck_pop3_kimmo.pl is in irssi-scripts 20160301.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | # Provides /mail command for POP3 mail checking
# for irssi 0.7.98 (tested on CVS) by Kimmo Lehto
#
# Requires Net::POP3 module
# If you don't have it, you can install it using:
#
# perl -e shell -MCPAN;
# >install Net::POP3
#
use strict;
use Irssi;
use Net::POP3;
use vars qw($VERSION %IRSSI);
$VERSION = '0.5';
%IRSSI = (
authors => 'Kimmo Lehto',
contact => 'kimmo@a-men.org' ,
name => 'Mailcheck-POP3',
description => 'POP3 new mail notification and listing of mailbox contents. Use "/mail help" for instructions. Requires Net::POP3.',
license => 'Public Domain',
changed => 'Sun Apr 7 00:10 EET 2002'
);
my (%_mailcount, %_mailchecktimer);
sub cmd_checkmail
{
my $args = shift;
my ($user, $pass, $host) = split(/\;/, $args);
my ($i, $from, $subject, $head);
my $POP3TIMEOUT = Irssi::settings_get_int("pop3_timeout");
my $pop = Net::POP3->new( $host, Timeout => $POP3TIMEOUT );
my $count = $pop->login($user, $pass);
if (!$count || !$pop)
{
Irssi::print("Invalid POP3 user, pass or host.", MSGLEVEL_CLIENTERROR);
if (!$_mailcount{"$user\@$host"})
{
Irssi::timeout_remove($_mailchecktimer{"$user\@$host"});
delete $_mailchecktimer{"$user\@$host"};
}
$pop->quit();
return undef;
}
if (!$_mailcount{"$user\@$host"}) { $_mailcount{"$user\@$host"} = $count; $pop->quit(); return 1; }
if ($_mailcount{"$user\@$host"} < $count)
{
Irssi::print("%R>>%n New Mail for $user\@$host:");
for( $i = $_mailcount{"$user\@$host"} + 1; $i <= $count; $i++ )
{
foreach $head (@{$pop->top($i)})
{
if ($head =~ /^From:\s+(.*)$/i) { $from = $1; chomp($from);}
elsif ($head =~ /^Subject:\s+(.*)$/i) { $subject = $1; chomp($subject);}
}
Irssi::print("From : %W$from%n\nSubject: %W$subject%n");
}
}
$_mailcount{"$user\@$host"} = $count;
$pop->quit();
return 1;
}
sub start_check
{
my ($userhost, $pass) = @_;
my ($user, $host) = split(/\@/, $userhost);
my $INTERVAL = Irssi::settings_get_int("pop3_interval");
if (cmd_checkmail("$user;$pass;$host"))
{
$_mailchecktimer{"$user\@$host"} = Irssi::timeout_add($INTERVAL * 1000, 'cmd_checkmail', "$user;$pass;$host");
Irssi::print("Account $user\@$host is now being monitored for new mail.");
}
}
sub cmd_mail
{
my $args = shift;
my (@arg) = split(/\s+/, $args);
if (($arg[0] eq "add") && $arg[1] && $arg[2])
{
if ($_mailchecktimer{$arg[1]})
{
Irssi::print("Account " . $arg[1] . " is already being monitored.");
}
else
{
start_check($arg[1], $arg[2]);
}
}
elsif ($arg[0] eq "list")
{
Irssi::print("Active POP3 Accounts Being Monitored:");
foreach (keys %_mailchecktimer)
{
Irssi::print(" %W-%n $_ ($_mailcount{$_} Mail message(s))");
}
Irssi::print("End of /mail list");
}
else
{
Irssi::print("%Wmailcheck.pl%n $VERSION - By KimmoKe\%W@%nircnet\n");
Irssi::print("Usage:");
Irssi::print("/mail add <user\@host> <password> - add account to be monitored.");
Irssi::print("/mail remove <user\@host> - stop monitoring account");
Irssi::print("/mail list - list monitored accounts");
Irssi::print("/mail list <user\@host> - list ALL messages in mailbox");
Irssi::print("\n%WNote:%n Passwords are kept in irssi's memory in %Wplain text%n, and the password will also remain in the command history. The POP3 authorization is currently also plain text.\n");
Irssi::print("Check interval and POP3 login timeout are controlled with %W/set pop3_interval%n (default: 60 seconds) and %Wpop3_timeout%n (default: 30 seconds).");
}
}
Irssi::settings_add_int("misc","pop3_timeout",30);
Irssi::settings_add_str("misc","pop3_interval","60");
Irssi::command_bind('mail', 'cmd_mail');
|