Веб-сервер Apache может Ответить на запросы SMTP/IMAP/POP3?

Вот решение с помощью Perl File::Find вместо того, чтобы пытаться работать вокруг запутанности оболочки:

#!/usr/bin/env perl

use strict;
use warnings;
use File::Find;
use Digest::MD5 qw(md5); # To find duplicates

my %lower_case_files_found;
find(
      sub{
          -f or return; # Skip non-files
          push @{$lower_case_files_found{+lc}},$File::Find::name;
      },
      '.'
);
for my $lower_case_name (sort keys %lower_case_files_found){
    my $number_of_files = scalar @{$lower_case_files_found{$lower_case_name}};
    if($number_of_files > 1){
           my %digests_seen;
           for my $file (@{$lower_case_files_found{$lower_case_name}}){
               open my $fh,'<',$file or die "Failed to open $file: $!\n";
               my $file_content = do {local $/;<$fh>};
               my $digest = md5($file_content);
               push @{$digests_seen{$digest}},$file;
           }
           for my $digest (sort keys %digests_seen){
               my $num_of_files = scalar @{$digests_seen{$digest}};
               if ($num_of_files > 1){
                   print "Duplicates: \n";
                   print "[$_]\n" for @{$digests_seen{$digest}}
               }
           }
    }
}

Это использует сумму MD5 для определения дубликатов файлов и печатает списки простофиль, которых она нашла. В каждое имя файла включают [] помочь Вам визуально определить имена файлов, содержащие новую строку. Я сознательно не добавил код для удаления любых файлов, поскольку этот код полностью не тестируется. Я оставляю его до Вас, чтобы сделать то, что Вы хотите с получающимся списком.

Ожидайте верхнюю память и использование ЦП, если Ваши файлы будут большими в размере: вышеупомянутый сценарий загружает каждый файл в память и выполняет сумму MD5 на ее целом содержании.

3
13.01.2019, 23:16
1 ответ

Хотя я полагаю, что вы могли бы настроить Apache на прослушивание соответствующих портов для других сервисов, и вы могли бы, вероятно, написать новый модуль, чтобы он мог отвечать на другие сервисы, такие как SMTP, вопрос будет... зачем вам это нужно? (изобретая колесо и всё такое)

Вы могли бы настроить другие сервисы для работы с SMTP и т.д., работая на той же самой системе, не пытаясь адаптировать Apache для использования, для которого он изначально не предназначен.

Возможно, вы захотите начать сначала, какова ваша конечная цель, чего вы пытаетесь достичь? Если ящик Fedora должен быть способен обрабатывать SMTP-соединения к/от него, вы можете настроить sendmail для этой цели. Если вам также нужно, чтобы он был почтовым сервером (чтобы на нем находились почтовые ящики), то вы можете это сделать (я уже давно не настраивал *nix box в качестве почтового сервера, поэтому я воздержусь от предложений по лучшим приложениям).

1
27.01.2020, 21:31

Теги

Похожие вопросы