【问题标题】:Perl script to parse the original IP of the sender from the mail headerPerl 脚本从邮件头解析发件人的原始 IP
【发布时间】:2016-03-11 09:31:54
【问题描述】:

我正在查看 perl 脚本(从邮件标头解析发件人的原始 IP),但我不知道该怎么做...

在使用 Google 进行查看后,我发现我必须使用一些 Perl 模块,例如:Mail::Field、Mail::Header、Email::Simple 等。

不幸的是,大多数示例都集中在发件人、收件人或/和主题上。更少关于发件人的原始 IP。

欢迎任何帮助!谢谢!

【问题讨论】:

  • 您是否考虑过使用 1) Email::Received 解析单个 Received: 标头 2) Email::Simple 提取第一个/所有 Received: 标头?

标签: linux perl email parsing email-headers


【解决方案1】:

不确定这是您想要的:

假设:你有一个heade txt文件 从同一行中的 ipaddress 接收

运行:sender_ip.pl header.txt

[gliang@www perl_tools]$ cat sender_ip.pl

#!/usr/bin/perl
use strict;
use warnings;

return 1  unless $0 eq __FILE__;
main(@ARGV) if $0 eq __FILE__;

sub main{
    my @parameters = @_;

    my $file = check_input(@parameters);
    my @headerlines = read_header($file);
    my @ips  = get_ips(@headerlines);

    if(scalar(@ips)>0){
        print "\n*** sender ips @ips\n";
    }else{
        print "\n\n*** did not find sender ip\n";
    }
}

sub check_input{
    my @parameters  = @_;

    if(scalar(@parameters)>0){

    }else{
        print "\n*** add header.txt file, please!\n";
        exit(1);
    }
    my $file = $parameters[0];
    if(-e $file){

    }else{
        print "\n*** input file does not exist\n\n";
        exit(1);
    }
    return $file;
}

sub read_header{
    my $file  = $_[0];
    open(my $FILE, '<', $file);
    my @headerlines = <$FILE>;
    close($FILE);
    return @headerlines;
}


sub get_ips{
    my @headerlines= @_;

    my @ips;
    foreach my $line(@headerlines){
        chomp($line);
        if($line =~ m/Received/ && $line=~ m/from/i){
            if ($line =~ /(\d+\.\d+\.\d+\.\d+)/){
                my $ip = $1;
                push(@ips, $ip);
            }
        }
    }
    return @ips;
}

【讨论】:

  • sub get_ips{ 我的@headerlines= @_;我的@ips; foreach 我的 $line(@headerlines){ chomp($line); if($line =~ m/Received/ && $line=~ m/from/i){ if ($line =~ /(\d+\.\d+\.\d+\.\d+)/){ 我的 $ ip = $1;推(@ips,$ip); } } } 返回@ips; }
猜你喜欢
  • 2022-12-17
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 2012-06-08
  • 2013-06-15
  • 1970-01-01
  • 2014-03-23
  • 2014-04-14
相关资源
最近更新 更多