#!@PERL@ use strict; use Pod::Usage; use Getopt::Long; =pod =head1 NAME basic_pop3_auth - POP3 authenticator for Squid =head1 SYNOPSIS basic_pop3_auth server =head1 DESCRIPTION B authenticates user credentials against a POP3 server. =head1 OPTIONS The only option this helper takes is the name of the POP3 server to validate against. =head1 AUTHOR This program was written by I> This manual was written by I> =head1 COPYRIGHT * Copyright (C) 1996-2023 The Squid Software Foundation and contributors * * Squid software is distributed under GPLv2+ license and includes * contributions from numerous individuals and organizations. * Please see the COPYING and CONTRIBUTORS files for details. # Copyright (C) 2006 Henrik Nordstrom # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. # # Change log: # 2006-12-10 henrik Initial revision # =head1 QUESTIONS Questions on the usage of this program can be sent to the I> =head1 REPORTING BUGS Bug reports need to be made in English. See http://wiki.squid-cache.org/SquidFaq/BugReporting for details of what you need to include with your bug report. Report bugs or bug fixes using http://bugs.squid-cache.org/ Report serious security bugs to I> Report ideas for new improvements to the I> =head1 SEE ALSO squid (8), GPL (7), The Squid FAQ wiki http://wiki.squid-cache.org/SquidFaq The Squid Configuration Manual http://www.squid-cache.org/Doc/config/ =cut use Net::POP3; $|=1; if ( @ARGV != 1 ) { print STDERR "Usage: $0 popserver\n"; exit 1 } my $server = shift @ARGV; while(<>) { my ($username, $password) = split(/\s+/); $username =~ s/%([0-9a-f][0-9a-f])/pack("H2",$1)/gie; $password =~ s/%([0-9a-f][0-9a-f])/pack("H2",$1)/gie; my $pop = Net::POP3->new($server); if (!$pop) { print "ERR Server not responding\n"; next; } # Here apop could be used instead for MD5 support if ($pop->login($username, $password)) { print "OK\n"; } else { print "ERR\n"; } $pop->quit; undef $pop; }