Linux server.thearyasamaj.org 4.18.0-553.56.1.el8_10.x86_64 #1 SMP Tue Jun 10 05:00:59 EDT 2025 x86_64
Apache
: 103.90.241.146 | : 216.73.216.158
Cant Read [ /etc/named.conf ]
5.6.40
ftpuser@mantra.thearyasamaj.org
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
sbin /
[ HOME SHELL ]
Name
Size
Permission
Action
NetworkManager
3.41
MB
-rwxr-xr-x
a3mnt
832
B
-rwxr-xr-x
aakore
481
B
-rwxr-xr-x
accessdb
12.59
KB
-rwxr-xr-x
accton
13.69
KB
-rwxr-xr-x
acp-update-controller
820
B
-rwxr-xr-x
acrocmd
822
B
-rwxr-xr-x
acronis_encrypt
818
B
-rwxr-xr-x
acronis_mms
1.29
KB
-rwxr-xr-x
acronis_schedinfo
435
B
-rwxr-xr-x
acronis_schedule
818
B
-rwxr-xr-x
acropsh
804
B
-rwxr-xr-x
adcli
171.08
KB
-rwxr-xr-x
addgnupghome
3
KB
-rwxr-xr-x
addpart
24.85
KB
-rwxr-xr-x
adduser
148.13
KB
-rwxr-xr-x
agetty
62.38
KB
-rwxr-xr-x
alternatives
36.62
KB
-rwxr-xr-x
anacron
40.98
KB
-rwxr-xr-x
apachectl
4.19
KB
-rwxr-xr-x
applygnupgdefaults
2.17
KB
-rwxr-xr-x
arp
64.71
KB
-rwxr-xr-x
arpd
87.1
KB
-rwxr-xr-x
arping
28.74
KB
-rwxr-xr-x
atd
32.63
KB
-rwxr-xr-x
atrun
67
B
-rwxr-xr-x
auditctl
45.04
KB
-rwxr-xr-x
auditd
155.78
KB
-rwxr-xr-x
augenrules
3.7
KB
-rwxr-xr-x
aureport
122.34
KB
-rwxr-xr-x
ausearch
130.37
KB
-rwxr-xr-x
autrace
16.53
KB
-rwxr-x---
avcstat
16.39
KB
-rwxr-xr-x
badblocks
32.57
KB
-rwxr-xr-x
biosdecode
25.45
KB
-rwxr-xr-x
biosdevname
46.16
KB
-rwxr-xr-x
blkdeactivate
15.97
KB
-r-xr-xr-x
blkdiscard
29.05
KB
-rwxr-xr-x
blkid
98.66
KB
-rwxr-xr-x
blkzone
49.73
KB
-rwxr-xr-x
blockdev
41.3
KB
-rwxr-xr-x
bpftool
2.77
MB
-rwxr-xr-x
bridge
150.15
KB
-rwxr-xr-x
build-locale-archive
812.27
KB
-rwx------
cache_check
1.43
MB
-rwxr-xr-x
cache_dump
1.43
MB
-rwxr-xr-x
cache_metadata_size
1.43
MB
-rwxr-xr-x
cache_repair
1.43
MB
-rwxr-xr-x
cache_restore
1.43
MB
-rwxr-xr-x
cache_writeback
1.43
MB
-rwxr-xr-x
capsh
32.44
KB
-rwxr-xr-x
cfdisk
98.39
KB
-rwxr-xr-x
chcpu
28.82
KB
-rwxr-xr-x
chgpasswd
69.67
KB
-rwxr-xr-x
chkconfig
45.16
KB
-rwxr-xr-x
chpasswd
61.42
KB
-rwxr-xr-x
chronyd
351.16
KB
-rwxr-xr-x
chroot
41.44
KB
-rwxr-xr-x
clock
65.26
KB
-rwxr-xr-x
clockdiff
20.42
KB
-rwxr-xr-x
consoletype
11.85
KB
-rwxr-xr-x
convertquota
78.68
KB
-rwxr-xr-x
cracklib-check
13.05
KB
-rwxr-xr-x
cracklib-format
251
B
-rwxr-xr-x
cracklib-packer
13.05
KB
-rwxr-xr-x
cracklib-unpacker
9.03
KB
-rwxr-xr-x
create-cracklib-dict
990
B
-rwxr-xr-x
crond
73.94
KB
-rwxr-xr-x
cryptsetup
143.43
KB
-rwxr-xr-x
csf
245.08
KB
-rwx------
ctrlaltdel
20.77
KB
-rwxr-xr-x
ctstat
25.32
KB
-rwxr-xr-x
dcb
146.85
KB
-rwxr-xr-x
ddns-confgen
20.45
KB
-rwxr-xr-x
debugfs
231.63
KB
-rwxr-xr-x
delpart
24.85
KB
-rwxr-xr-x
depmod
159.46
KB
-rwxr-xr-x
devlink
185.22
KB
-rwxr-xr-x
dhclient
453.64
KB
-rwxr-xr-x
dhclient-script
32.86
KB
-rwxr-xr-x
dkms
117.1
KB
-rwxr-xr-x
dmeventd
45.02
KB
-r-xr-xr-x
dmfilemapd
24.53
KB
-r-xr-xr-x
dmidecode
125.68
KB
-rwxr-xr-x
dmsetup
158.63
KB
-r-xr-xr-x
dmstats
158.63
KB
-r-xr-xr-x
dnssec-checkds
936
B
-rwxr-xr-x
dnssec-coverage
938
B
-rwxr-xr-x
dnssec-dsfromkey
60.84
KB
-rwxr-xr-x
dnssec-importkey
60.83
KB
-rwxr-xr-x
dnssec-keyfromlabel
64.74
KB
-rwxr-xr-x
dnssec-keygen
72.83
KB
-rwxr-xr-x
dnssec-keymgr
934
B
-rwxr-xr-x
dnssec-revoke
56.73
KB
-rwxr-xr-x
dnssec-settime
60.83
KB
-rwxr-xr-x
dnssec-signzone
117.19
KB
-rwxr-xr-x
dnssec-verify
52.84
KB
-rwxr-xr-x
dosfsck
65.13
KB
-rwxr-xr-x
dosfslabel
61.1
KB
-rwxr-xr-x
dovecot
93.86
KB
-rwxr-xr-x
dump-acct
29.15
KB
-rwxr-xr-x
dump-utmp
25.02
KB
-rwxr-xr-x
dumpe2fs
32.51
KB
-rwxr-xr-x
e2freefrag
16.41
KB
-rwxr-xr-x
e2fsck
328.51
KB
-rwxr-xr-x
e2image
36.59
KB
-rwxr-xr-x
e2label
110.63
KB
-rwxr-xr-x
e2mmpstatus
32.51
KB
-rwxr-xr-x
e2undo
20.37
KB
-rwxr-xr-x
e4crypt
24.54
KB
-rwxr-xr-x
e4defrag
28.48
KB
-rwxr-xr-x
ebtables
216.6
KB
-rwxr-xr-x
ebtables-restore
216.6
KB
-rwxr-xr-x
ebtables-save
216.6
KB
-rwxr-xr-x
edquota
91.24
KB
-rwxr-xr-x
era_check
1.43
MB
-rwxr-xr-x
era_dump
1.43
MB
-rwxr-xr-x
era_invalidate
1.43
MB
-rwxr-xr-x
era_restore
1.43
MB
-rwxr-xr-x
ether-wake
73.99
KB
-rwxr-xr-x
ethtool
557.79
KB
-rwxr-xr-x
faillock
20.52
KB
-rwxr-xr-x
fatlabel
61.1
KB
-rwxr-xr-x
fcgistarter
12.48
KB
-rwxr-xr-x
fdformat
33.16
KB
-rwxr-xr-x
fdisk
130.9
KB
-rwxr-xr-x
filefrag
16.45
KB
-rwxr-xr-x
findfs
12.36
KB
-rwxr-xr-x
firewalld
6.92
KB
-rwxr-xr-x
fix-info-dir
7.84
KB
-rwxr-xr-x
fixfiles
10.48
KB
-rwxr-xr-x
fsadm
24
KB
-r-xr-xr-x
fsck
53.47
KB
-rwxr-xr-x
fsck.cramfs
41.41
KB
-rwxr-xr-x
fsck.ext2
328.51
KB
-rwxr-xr-x
fsck.ext3
328.51
KB
-rwxr-xr-x
fsck.ext4
328.51
KB
-rwxr-xr-x
fsck.fat
65.13
KB
-rwxr-xr-x
fsck.minix
98.73
KB
-rwxr-xr-x
fsck.msdos
65.13
KB
-rwxr-xr-x
fsck.vfat
65.13
KB
-rwxr-xr-x
fsck.xfs
1.92
KB
-rwxr-xr-x
fsfreeze
16.38
KB
-rwxr-xr-x
fstrim
45.61
KB
-rwxr-xr-x
ftpscrub
17.87
KB
-rwxr-xr-x
ftpshut
12.36
KB
-rwxr-xr-x
fuse2fs
70.38
KB
-rwxr-xr-x
fuser
38.14
KB
-rwxr-xr-x
g13-syshelp
189.71
KB
-rwxr-xr-x
genhomedircon
29.27
KB
-rwxr-xr-x
genhostid
11.85
KB
-rwxr-xr-x
genl
94.95
KB
-rwxr-xr-x
genrandom
12.37
KB
-rwxr-xr-x
getcap
12.34
KB
-rwxr-xr-x
getenforce
7.83
KB
-rwxr-xr-x
getpcaps
12.27
KB
-rwxr-xr-x
getsebool
11.86
KB
-rwxr-xr-x
groupadd
95.34
KB
-rwxr-xr-x
groupdel
91.09
KB
-rwxr-xr-x
groupmems
61.48
KB
-rwxr-xr-x
groupmod
99.37
KB
-rwxr-xr-x
grpck
61.48
KB
-rwxr-xr-x
grpconv
57.26
KB
-rwxr-xr-x
grpunconv
57.24
KB
-rwxr-xr-x
grub2-bios-setup
1.14
MB
-rwxr-xr-x
grub2-get-kernel-settings
2.34
KB
-rwxr-xr-x
grub2-install
1.43
MB
-rwxr-xr-x
grub2-macbless
1.12
MB
-rwxr-xr-x
grub2-mkconfig
8.68
KB
-rwxr-xr-x
grub2-ofpathname
242.19
KB
-rwxr-xr-x
grub2-probe
1.14
MB
-rwxr-xr-x
grub2-reboot
3.99
KB
-rwxr-xr-x
grub2-rpm-sort
279.02
KB
-rwxr-xr-x
grub2-set-bootflag
11.87
KB
-rwsr-xr-x
grub2-set-default
3.45
KB
-rwxr-xr-x
grub2-set-password
3.05
KB
-rwxr-xr-x
grub2-setpassword
3.05
KB
-rwxr-xr-x
grub2-sparc64-setup
1.14
MB
-rwxr-xr-x
grub2-switch-to-blscfg
8.6
KB
-rwxr-xr-x
grubby
260
B
-rwxr-xr-x
gss-server
24.59
KB
-rwxr-xr-x
halt
218.45
KB
-rwxr-xr-x
hardlink
17.09
KB
-rwxr-xr-x
hdparm
131.91
KB
-rwxr-xr-x
htcacheclean
32.63
KB
-rwxr-xr-x
httpd
570.3
KB
-rwxr-xr-x
hwclock
65.26
KB
-rwxr-xr-x
iconvconfig
33.04
KB
-rwxr-xr-x
ifconfig
80.86
KB
-rwxr-xr-x
ifdown
1.07
KB
-rwxr-xr-x
ifenslave
24.94
KB
-rwxr-xr-x
ifstat
91.22
KB
-rwxr-xr-x
iftop
75.42
KB
-rwxr-xr-x
ifup
1.04
KB
-rwxr-xr-x
in.proftpd
1.17
MB
-rwxr-xr-x
init
1.53
MB
-rwxr-xr-x
insmod
159.46
KB
-rwxr-xr-x
install-info
50.23
KB
-rwxr-xr-x
installkernel
323
B
-rwxr-xr-x
intel_sdsi
15.61
KB
-rwxr-xr-x
iotop
511
B
-rwxr-xr-x
ip
664.43
KB
-rwxr-xr-x
ip6tables
216.6
KB
-rwxr-xr-x
ip6tables-restore
216.6
KB
-rwxr-xr-x
ip6tables-restore-translate
216.6
KB
-rwxr-xr-x
ip6tables-save
216.6
KB
-rwxr-xr-x
ip6tables-translate
216.6
KB
-rwxr-xr-x
ipmaddr
21
KB
-rwxr-xr-x
iprconfig
408.03
KB
-rwxr-xr-x
iprdbg
137.57
KB
-rwxr-xr-x
iprdump
129.3
KB
-rwxr-xr-x
iprinit
125.28
KB
-rwxr-xr-x
iprsos
2.18
KB
-rwxr-xr-x
iprupdate
129.3
KB
-rwxr-xr-x
ipset
9.01
KB
-rwxr-xr-x
iptables
216.6
KB
-rwxr-xr-x
iptables-apply
3.43
KB
-rwxr-xr-x
iptables-restore
216.6
KB
-rwxr-xr-x
iptables-restore-translate
216.6
KB
-rwxr-xr-x
iptables-save
216.6
KB
-rwxr-xr-x
iptables-translate
216.6
KB
-rwxr-xr-x
iptstate
92.05
KB
-rwxr-xr-x
iptunnel
25
KB
-rwxr-xr-x
irqbalance
62.22
KB
-rwxr-xr-x
irqbalance-ui
37.22
KB
-rwxr-xr-x
isc-hmac-fixup
11.85
KB
-rwxr-xr-x
jk_check
11.2
KB
-rwxr-xr-x
jk_chrootlaunch
20.77
KB
-rwxr-xr-x
jk_chrootsh
32.73
KB
-rwsr-xr-x
jk_cp
4.12
KB
-rwxr-xr-x
jk_init
9.68
KB
-rwxr-xr-x
jk_jailuser
11.81
KB
-rwxr-xr-x
jk_list
4.93
KB
-rwxr-xr-x
jk_lsh
24.66
KB
-rwxr-xr-x
jk_socketd
29.05
KB
-rwxr-xr-x
jk_update
9.11
KB
-rwxr-xr-x
kexec
194.97
KB
-rwxr-xr-x
kpartx
49.05
KB
-rwxr-xr-x
lchage
16.38
KB
-rwxr-xr-x
ldattach
32.98
KB
-rwxr-xr-x
ldconfig
941.15
KB
-rwxr-xr-x
ledctl
92.25
KB
-rwxr-xr-x
ledmon
96.32
KB
-rwxr-xr-x
lfd
382.43
KB
-rwx------
lgroupadd
12
KB
-rwxr-xr-x
lgroupdel
11.99
KB
-rwxr-xr-x
lgroupmod
19.99
KB
-rwxr-xr-x
lid
16.26
KB
-rwxr-xr-x
lnewusers
19.99
KB
-rwxr-xr-x
lnstat
25.32
KB
-rwxr-xr-x
load_policy
12.27
KB
-rwxr-xr-x
logrotate
93.09
KB
-rwxr-xr-x
logsave
16.4
KB
-rwxr-xr-x
losetup
90.59
KB
-rwxr-xr-x
lpasswd
20.34
KB
-rwxr-xr-x
lshw
966.2
KB
-rwxr-xr-x
lsmod
159.46
KB
-rwxr-xr-x
lspci
94.78
KB
-rwxr-xr-x
luseradd
19.99
KB
-rwxr-xr-x
luserdel
16
KB
-rwxr-xr-x
lusermod
20
KB
-rwxr-xr-x
lvchange
2.6
MB
-r-xr-xr-x
lvconvert
2.6
MB
-r-xr-xr-x
lvcreate
2.6
MB
-r-xr-xr-x
lvdisplay
2.6
MB
-r-xr-xr-x
lvextend
2.6
MB
-r-xr-xr-x
lvm
2.6
MB
-r-xr-xr-x
lvm_import_vdo
13.14
KB
-r-xr-xr-x
lvmconfig
2.6
MB
-r-xr-xr-x
lvmdevices
2.6
MB
-r-xr-xr-x
lvmdiskscan
2.6
MB
-r-xr-xr-x
lvmdump
10.12
KB
-r-xr-xr-x
lvmpolld
200.66
KB
-r-xr-xr-x
lvmsadc
2.6
MB
-r-xr-xr-x
lvmsar
2.6
MB
-r-xr-xr-x
lvreduce
2.6
MB
-r-xr-xr-x
lvremove
2.6
MB
-r-xr-xr-x
lvrename
2.6
MB
-r-xr-xr-x
lvresize
2.6
MB
-r-xr-xr-x
lvs
2.6
MB
-r-xr-xr-x
lvscan
2.6
MB
-r-xr-xr-x
lwresd
840.73
KB
-rwxr-xr-x
makedumpfile
425.19
KB
-rwxr-xr-x
matchpathcon
12.36
KB
-rwxr-xr-x
mcelog
181.47
KB
-rwxr-xr-x
mdadm
611.59
KB
-rwxr-xr-x
mdmon
341.71
KB
-rwxr-xr-x
mediabuilder
826
B
-rwxr-xr-x
mii-diag
25.4
KB
-rwxr-xr-x
mii-tool
21.03
KB
-rwxr-xr-x
milter-greylist
336.08
KB
-rwxr-xr-x
mkdict
251
B
-rwxr-xr-x
mkdosfs
39.07
KB
-rwxr-xr-x
mkdumprd
12.54
KB
-rwxr-xr-x
mke2fs
138.45
KB
-rwxr-xr-x
mkfadumprd
2.23
KB
-rwxr-xr-x
mkfs
16.47
KB
-rwxr-xr-x
mkfs.cramfs
41.26
KB
-rwxr-xr-x
mkfs.ext2
138.45
KB
-rwxr-xr-x
mkfs.ext3
138.45
KB
-rwxr-xr-x
mkfs.ext4
138.45
KB
-rwxr-xr-x
mkfs.fat
39.07
KB
-rwxr-xr-x
mkfs.minix
86.54
KB
-rwxr-xr-x
mkfs.msdos
39.07
KB
-rwxr-xr-x
mkfs.vfat
39.07
KB
-rwxr-xr-x
mkfs.xfs
474.59
KB
-rwxr-xr-x
mkhomedir_helper
24.42
KB
-rwxr-xr-x
mklost+found
11.85
KB
-rwxr-xr-x
mksquashfs
186.84
KB
-rwxr-xr-x
mkswap
86.46
KB
-rwxr-xr-x
modinfo
159.46
KB
-rwxr-xr-x
modprobe
159.46
KB
-rwxr-xr-x
mtr
110.92
KB
-rwxr-xr-x
mtr-packet
58.3
KB
-rwxr-xr-x
mysqld
62.52
MB
-rwxr-xr-x
named
840.73
KB
-rwxr-xr-x
named-checkconf
36.77
KB
-rwxr-xr-x
named-checkzone
36.63
KB
-rwxr-xr-x
named-compilezone
36.63
KB
-rwxr-xr-x
named-journalprint
11.84
KB
-rwxr-xr-x
nameif
16.98
KB
-rwxr-xr-x
newusers
107.21
KB
-rwxr-xr-x
nft
20.4
KB
-rwxr-xr-x
nologin
11.87
KB
-rwxr-xr-x
nsec3hash
12.28
KB
-rwxr-xr-x
nstat
87.14
KB
-rwxr-xr-x
opendkim
222.52
KB
-rwxr-xr-x
opendkim-default-keygen
1.4
KB
-rwxr-xr-x
opendkim-reportstats
14.16
KB
-rwxr-xr-x
ownership
16.43
KB
-rwxr-xr-x
packer
13.05
KB
-rwxr-xr-x
pam_console_apply
45.18
KB
-rwxr-xr-x
pam_timestamp_check
11.86
KB
-rwsr-xr-x
paperconfig
4.07
KB
-rwxr-xr-x
parted
85.6
KB
-rwxr-xr-x
partprobe
16.39
KB
-rwxr-xr-x
partx
94.48
KB
-rwxr-xr-x
pdata_tools
1.43
MB
-rwxr-xr-x
php-fpm
4.8
MB
-rwxr-xr-x
pidof
16.55
KB
-rwxr-xr-x
ping
66.08
KB
-rwxr-xr-x
ping6
66.08
KB
-rwxr-xr-x
pivot_root
12.37
KB
-rwxr-xr-x
plipconfig
12.71
KB
-rwxr-xr-x
pluginviewer
20.57
KB
-rwxr-xr-x
postalias
20.39
KB
-rwxr-xr-x
postcat
20.06
KB
-rwxr-xr-x
postconf
191.06
KB
-rwxr-xr-x
postdrop
20.42
KB
-rwxr-sr-x
postfix
16.27
KB
-rwxr-xr-x
postgrey
37.94
KB
-rwxr-xr-x
postgreyreport
23.8
KB
-rwxr-xr-x
postkick
11.97
KB
-rwxr-xr-x
postlock
12.26
KB
-rwxr-xr-x
postlog
12.14
KB
-rwxr-xr-x
postmap
24.41
KB
-rwxr-xr-x
postmulti
28.91
KB
-rwxr-xr-x
postqueue
24.59
KB
-rwxr-sr-x
postsuper
28.81
KB
-rwxr-xr-x
posttls-finger
44.79
KB
-rwxr-xr-x
poweroff
218.45
KB
-rwxr-xr-x
proftpd
1.17
MB
-rwxr-xr-x
pvchange
2.6
MB
-r-xr-xr-x
pvck
2.6
MB
-r-xr-xr-x
pvcreate
2.6
MB
-r-xr-xr-x
pvdisplay
2.6
MB
-r-xr-xr-x
pvmove
2.6
MB
-r-xr-xr-x
pvremove
2.6
MB
-r-xr-xr-x
pvresize
2.6
MB
-r-xr-xr-x
pvs
2.6
MB
-r-xr-xr-x
pvscan
2.6
MB
-r-xr-xr-x
pwck
57.26
KB
-rwxr-xr-x
pwconv
53.09
KB
-rwxr-xr-x
pwhistory_helper
20.42
KB
-rwxr-xr-x
pwunconv
53.12
KB
-rwxr-xr-x
quot
78.67
KB
-rwxr-xr-x
quotacheck
115.75
KB
-rwxr-xr-x
quotaoff
83.16
KB
-rwxr-xr-x
quotaon
83.16
KB
-rwxr-xr-x
quotastats
16.54
KB
-rwxr-xr-x
raid-check
3.7
KB
-rwxr-xr-x
rdisc
24.55
KB
-rwxr-xr-x
rdma
160.91
KB
-rwxr-xr-x
rdma-ndd
15.95
KB
-rwxr-xr-x
readprofile
20.54
KB
-rwxr-xr-x
realm
144.32
KB
-rwxr-xr-x
reboot
218.45
KB
-rwxr-xr-x
repquota
83.24
KB
-rwxr-xr-x
resize2fs
64.9
KB
-rwxr-xr-x
resizepart
41.56
KB
-rwxr-xr-x
resolvconf
195.74
KB
-rwxr-xr-x
restorecon
20.52
KB
-rwxr-xr-x
restorecon_xattr
16.41
KB
-rwxr-xr-x
rfkill
53.48
KB
-rwxr-xr-x
rmmod
159.46
KB
-rwxr-xr-x
rndc
36.52
KB
-rwxr-xr-x
rndc-confgen
20.44
KB
-rwxr-xr-x
rngd
104.84
KB
-rwxr-xr-x
rotatelogs
24.54
KB
-rwxr-xr-x
route
67.63
KB
-rwxr-xr-x
rsyslogd
724.33
KB
-rwxr-xr-x
rtacct
46.93
KB
-rwxr-xr-x
rtcwake
49.34
KB
-rwxr-xr-x
rtmon
90.81
KB
-rwxr-xr-x
rtstat
25.32
KB
-rwxr-xr-x
runlevel
218.45
KB
-rwxr-xr-x
runuser
48.98
KB
-rwxr-xr-x
sa
46.62
KB
-rwxr-xr-x
saslauthd
94.42
KB
-rwxr-xr-x
sasldblistusers2
20.77
KB
-rwxr-xr-x
saslpasswd2
16.42
KB
-rwxr-xr-x
schedmgr
818
B
-rwxr-xr-x
sedispatch
20.52
KB
-rwxr-xr-x
sefcontext_compile
65.34
KB
-rwxr-xr-x
selabel_digest
12.27
KB
-rwxr-xr-x
selabel_lookup
12.27
KB
-rwxr-xr-x
selabel_lookup_best_match
11.88
KB
-rwxr-xr-x
selabel_partial_match
11.88
KB
-rwxr-xr-x
selinux_check_access
12.35
KB
-rwxr-xr-x
selinuxconlist
11.87
KB
-rwxr-xr-x
selinuxdefcon
11.87
KB
-rwxr-xr-x
selinuxenabled
7.83
KB
-rwxr-xr-x
selinuxexeccon
11.85
KB
-rwxr-xr-x
semanage
41.18
KB
-rwxr-xr-x
semodule
29.27
KB
-rwxr-xr-x
sendmail
28.48
KB
-rwxr-xr-x
sendmail.postfix
28.48
KB
-rwxr-xr-x
service
3.64
KB
-rwxr-xr-x
sestatus
20.41
KB
-rwxr-xr-x
setcap
16.26
KB
-rwxr-xr-x
setenforce
12.26
KB
-rwxr-xr-x
setfiles
20.52
KB
-rwxr-xr-x
setpci
28.49
KB
-rwxr-xr-x
setquota
91.38
KB
-rwxr-xr-x
setroubleshootd
3.34
KB
-rwxr-xr-x
setsebool
16.36
KB
-rwxr-xr-x
sfdisk
118.5
KB
-rwxr-xr-x
shutdown
218.45
KB
-rwxr-xr-x
sim_server
11.86
KB
-rwxr-xr-x
slattach
43.76
KB
-rwxr-xr-x
smartctl
883.59
KB
-rwxr-xr-x
smartd
705.66
KB
-rwxr-xr-x
smtp-sink
33.7
KB
-rwxr-xr-x
smtp-source
28.61
KB
-rwxr-xr-x
sos
611
B
-rwxr-xr-x
sos-collector
1.05
KB
-rwxr-xr-x
sosreport
1.05
KB
-rwxr-xr-x
ss
191.24
KB
-rwxr-xr-x
sshd
869.56
KB
-rwxr-xr-x
sss_cache
61.03
KB
-rwxr-xr-x
sssd
81.59
KB
-rwxr-xr-x
suexec
20.4
KB
-r-x--x---
sulogin
49.23
KB
-rwxr-xr-x
swaplabel
16.49
KB
-rwxr-xr-x
swapoff
20.74
KB
-rwxr-xr-x
swapon
49.39
KB
-rwxr-xr-x
switch_root
16.48
KB
-rwxr-xr-x
sysctl
28.74
KB
-rwxr-xr-x
syspurpose
415
B
-rwxr-xr-x
t1libconfig
3.83
KB
-rwxr-xr-x
tcsd
309.68
KB
-rwxr-xr-x
telinit
218.45
KB
-rwxr-xr-x
testsaslauthd
16.66
KB
-rwxr-xr-x
thin_check
1.43
MB
-rwxr-xr-x
thin_delta
1.43
MB
-rwxr-xr-x
thin_dump
1.43
MB
-rwxr-xr-x
thin_ls
1.43
MB
-rwxr-xr-x
thin_metadata_pack
907.47
KB
-rwxr-xr-x
thin_metadata_size
1.43
MB
-rwxr-xr-x
thin_metadata_unpack
895.45
KB
-rwxr-xr-x
thin_repair
1.43
MB
-rwxr-xr-x
thin_restore
1.43
MB
-rwxr-xr-x
thin_rmap
1.43
MB
-rwxr-xr-x
thin_trim
1.43
MB
-rwxr-xr-x
tibxread
828
B
-rwxr-xr-x
timedatex
33.43
KB
-rwxr-xr-x
tipc
136.65
KB
-rwxr-xr-x
tracepath
20.44
KB
-rwxr-xr-x
tracepath6
20.44
KB
-rwxr-xr-x
trueimagemnt
850
B
-rwxr-xr-x
tsig-keygen
20.45
KB
-rwxr-xr-x
tune2fs
110.63
KB
-rwxr-xr-x
tuned
3.3
KB
-rwxr-xr-x
tuned-adm
5.23
KB
-rwxr-xr-x
udevadm
424.55
KB
-rwxr-xr-x
unbound-anchor
57.33
KB
-rwxr-xr-x
unix_chkpwd
36.85
KB
-rwsr-xr-x
unix_update
36.84
KB
-rwx------
unsquashfs
99.51
KB
-rwxr-xr-x
update-alternatives
36.62
KB
-rwxr-xr-x
update-pciids
1.71
KB
-rwxr-xr-x
update-smart-drivedb
14.44
KB
-rwxr-xr-x
useradd
148.13
KB
-rwxr-xr-x
userdel
107.3
KB
-rwxr-xr-x
usermod
144.08
KB
-rwxr-xr-x
uuserver
15.87
KB
-rwxr-xr-x
vdpa
91.5
KB
-rwxr-xr-x
vgcfgbackup
2.6
MB
-r-xr-xr-x
vgcfgrestore
2.6
MB
-r-xr-xr-x
vgchange
2.6
MB
-r-xr-xr-x
vgck
2.6
MB
-r-xr-xr-x
vgconvert
2.6
MB
-r-xr-xr-x
vgcreate
2.6
MB
-r-xr-xr-x
vgdisplay
2.6
MB
-r-xr-xr-x
vgexport
2.6
MB
-r-xr-xr-x
vgextend
2.6
MB
-r-xr-xr-x
vgimport
2.6
MB
-r-xr-xr-x
vgimportclone
2.6
MB
-r-xr-xr-x
vgimportdevices
2.6
MB
-r-xr-xr-x
vgmerge
2.6
MB
-r-xr-xr-x
vgmknodes
2.6
MB
-r-xr-xr-x
vgreduce
2.6
MB
-r-xr-xr-x
vgremove
2.6
MB
-r-xr-xr-x
vgrename
2.6
MB
-r-xr-xr-x
vgs
2.6
MB
-r-xr-xr-x
vgscan
2.6
MB
-r-xr-xr-x
vgsplit
2.6
MB
-r-xr-xr-x
vigr
68.05
KB
-rwxr-xr-x
vipw
68.05
KB
-rwxr-xr-x
virt-what
13.65
KB
-rwxr-xr-x
virtualmin
1.37
KB
-rwxr-xr-x
visudo
218.98
KB
-rwxr-xr-x
vmcore-dmesg
28.56
KB
-rwxr-xr-x
vnstatd
117.09
KB
-rwxr-xr-x
vpddecode
16.47
KB
-rwxr-xr-x
weak-modules
33.56
KB
-rwxr-xr-x
wipefs
41.1
KB
-rwxr-xr-x
xfs_admin
1.38
KB
-rwxr-xr-x
xfs_bmap
695
B
-rwxr-xr-x
xfs_copy
434.59
KB
-rwxr-xr-x
xfs_db
760.54
KB
-rwxr-xr-x
xfs_estimate
12.39
KB
-rwxr-xr-x
xfs_freeze
800
B
-rwxr-xr-x
xfs_fsr
49.47
KB
-rwxr-xr-x
xfs_growfs
422.57
KB
-rwxr-xr-x
xfs_info
1.26
KB
-rwxr-xr-x
xfs_io
188.34
KB
-rwxr-xr-x
xfs_logprint
454.77
KB
-rwxr-xr-x
xfs_mdrestore
410.16
KB
-rwxr-xr-x
xfs_metadump
782
B
-rwxr-xr-x
xfs_mkfile
1.02
KB
-rwxr-xr-x
xfs_ncheck
685
B
-rwxr-xr-x
xfs_quota
94.04
KB
-rwxr-xr-x
xfs_repair
715.23
KB
-rwxr-xr-x
xfs_rtcp
16.38
KB
-rwxr-xr-x
xfs_spaceman
45.51
KB
-rwxr-xr-x
xfsdump
308.22
KB
-rwxr-xr-x
xfsinvutil
67.05
KB
-rwxr-xr-x
xfsrestore
369.6
KB
-rwxr-xr-x
xqmstats
16.45
KB
-rwxr-xr-x
xtables-monitor
216.6
KB
-rwxr-xr-x
xtables-nft-multi
216.6
KB
-rwxr-xr-x
zabbix_agentd
726.99
KB
-rwxr-xr-x
zdump
20.55
KB
-rwxr-xr-x
zic
52.8
KB
-rwxr-xr-x
zramctl
99.09
KB
-rwxr-xr-x
Delete
Unzip
Zip
${this.title}
Close
Code Editor : postgreyreport
#!/usr/bin/perl # postgreyreport by tbaker@bakerfl.org # bits and peices of code taken from postgrey 1.11 ( http://isg.ee.ethz.ch/tools/postgrey/ ) package postgreyreport; use strict; use BerkeleyDB; use Getopt::Long 2.25 qw(:config posix_default no_ignore_case); use Net::Server::Daemonize qw( get_uid get_gid set_uid set_gid ); use Pod::Usage; #use Net::RBLClient; my $VERSION='1.14.3 (20100321)'; # used in maillog processing my $RE_revdns_ip = qr/ ([^\[\s]+)\[(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\]/; # ptr[1.2.3.4] my $RE_reject = qr/reject: /; my $RE_triplet = qr/$RE_revdns_ip: 450 .+from=<([^>]+)> to=<([^>]+)>/; my $dns; my %dns_cache; # used for --check_sender my $rbl = undef; # Net::RBLClient object select((select(STDOUT), $| = 1)[0]); # Unbuffer standard output. # default options, override via command line my %opt = ( user => 'postgrey', dbdir => '/var/spool/postfix/postgrey', delay => 300, return_string => 'Greylisted', # match on this string check_sender => '', # = mx,a,mx/24,a/24 # todo=spf - uses Net::DNS show_tries => 0, # number of greylist attempts within --delay separate_by_subnet => '', # if not blank output this string for every new /24 separate_by_ip => '', # if not blank output this string for every new IP single_line => 1, # output everything on a single line? (grouping enabled if false ) tab => 0, # use tabs as separators, not spaces (only in single line mode) show_time => 0, # show entry time in maillog skip_dnsbl => [], # list of DNSBL servers to check and skip reporting for skip_clients => [], # files of clients to skip reporting skip_pool => 0, # skip entries that appear to be a provider pool (last 2 ips in ptr) match_clients => [], # files of ONLY clients to report on v => 0, # verbose? used mainly for script debugging debug_db => 0, # output time() values from btree db debug_re => '', # but only for these hosts (separate by commas ) ); # start here sub main { GetOptions(\%opt, 'help|h', 'version', 'man', 'delay=s', 'user|u=s', 'dbdir=s', 'debug_db', 'debug_re=s', 'v+', 'return_string|greylist-text=s', 'show_tries', 'check_sender=s', 'separate_by_subnet=s', 'separate_by_ip=s', 'single_line!', 'tab', 'show_time', 'skip_dnsbl=s@','skip_clients=s@', 'match_clients=s@', 'skip_pool', ) or exit(1); if($opt{help}) { pod2usage(1) } if($opt{man}) { pod2usage(-exitstatus => 0, -verbose => 2) } if ($opt{version}) { print "postgreyreport $VERSION\n"; exit(0) } if (scalar(@{$opt{skip_dnsbl}}) > 0) { require Net::RBLClient; $rbl = Net::RBLClient->new ( lists => $opt{skip_dnsbl} ); } setup_debug(); # display key/value pairs from db read_client_files(); postgrey_fatal_report(); # do the work } ####################################################### # postgrey_fatal(): report on all fatal triplets # sub postgrey_fatal_report() { umask 0077; # mode 600 my %triplets; # hash of all triplets we will look at drop_priv($opt{user}); # change UID to 'postgrey' # convert --check_sender into hash: opt{do_checks}{VAL} if ($opt{check_sender}) { use Net::DNS; $dns = Net::DNS::Resolver->new; $opt{check_sender} = lc $opt{check_sender}; foreach my $check ( split(/,/,$opt{check_sender}) ) { $opt{do_checks}{$check}=1; print "Enabling Check: opt{do_checks}{$check} \n" if ($opt{v}); } } my $db = setup_dbm($opt{dbdir}); # connect to BerkeleyDB my @greyfatal = find_and_sort_fatal( \%{$db}, \%triplets ); # read STDIN and sort the fatal triplets # foreach: loop through (sorted) fatal triplets and display to STDOUT my ($last_ip,$last_subnet); # define now $opt{separate_by_ip} =~ s|\\n|\n|g; # do it once before the for loop $opt{separate_by_subnet} =~ s|\\n|\n|g; # "" foreach my $key (@greyfatal) { my ($ip,$sender,$recipient) = split(/\//,$key); # separate the triplet my $revdns = $triplets{$key}{revdns}; # we saved revdns during maillog parse, so we dont have to look it up # --check_sender=mx,mx/24,a,a/24 # dns lookups from Net::DNS are cached and only performed once per sender's @domain my $check_sender = ''; if ( $opt{do_checks}{mx} and check_sender_mx( $sender,$ip,'mx') ) { $check_sender='MX'; } elsif ( $opt{do_checks}{'mx/24'} and check_sender_mx( $sender,$ip,'mx/24') ) { $check_sender='MX/24'; } elsif ( $opt{do_checks}{a} and check_sender_a( $sender,$ip,'a') ) { $check_sender='A'; } elsif ( $opt{do_checks}{'a/24'} and check_sender_a( $sender,$ip,'a/24') ) { $check_sender='A/24'; } # if separate_by_ip or separate_by_subnet display configured text if ($last_subnet eq $triplets{$key}{subnet}) { print "$opt{separate_by_ip}" if ( ($last_ip ne $ip) and $opt{separate_by_ip}) ; } else { if ( $opt{separate_by_subnet} ) { print $opt{separate_by_subnet}; } elsif ( $opt{separate_by_ip} ) { print $opt{separate_by_ip}; } } # display output on single line or multi-line if ($opt{single_line}) { if ($opt{tab}) { printf "%s\t", $triplets{$key}{entrytime} if($opt{show_time}) ; printf "%s\t", $triplets{$key}{counter} if($opt{show_tries}) ; printf "%s\t", $check_sender if($opt{check_sender}) ; printf "%s\t", $ip ; printf "%s\t", $revdns ; printf "%s\t", $sender ; } else { printf "%s ", $triplets{$key}{entrytime} if($opt{show_time}) ; printf "%s ", $triplets{$key}{counter} if($opt{show_tries}) ; printf "%5s ", $check_sender if($opt{check_sender}) ; printf "%15s ", $ip ; printf "%s ", $revdns ; printf "%s ", $sender ; } printf "%s\n", $recipient; ; } else { ### multi-line ## only output PTR - IP if its a new IP (grouping) printf "%-77s ", $revdns if($last_ip ne $ip) ; printf "%15s" , $ip if($last_ip ne $ip) ; print "\n" if($last_ip ne $ip) ; ## always output the new pairs MX/A? (sender/recipient) # if sender was from MX or A of above IP printf "%5s " , $check_sender if($opt{check_sender}) ; printf " ", $check_sender if(! $opt{check_sender}); # tries or blank space printf " %2s ", $triplets{$key}{counter} if($opt{show_tries}) ; print " " if(! $opt{show_tries}) ; # sender - recipient printf " %40s ", $sender ; printf " %40s ", $recipient ; print "\n" ; } ($last_ip, $last_subnet) = ($ip, $triplets{$key}{subnet}); # save for next iteration } } ##################################################################### # find_and_sort_fatal( \%db, \%triplets ) # read STDIN (maillog) and remember any 4xx greylisted log entries # return array of fatal triplets (ip/sender/recipient) sorted by ip sub find_and_sort_fatal { my ($db, $triplets) = @_; # while(<>): STDIN is maillog.0, looking at reject: 4xx greylist entries and remembering all triplets MAILLOG: while (<>) { next unless (/$RE_reject/o); # only look at reject: lines next unless (/$opt{return_string}/o); # only look at greylisted lines next unless (/$RE_triplet/o); # extract the triplet my ($revdns,$ipaddr,$sender,$recipient) = ($1,$2,$3,$4); my @ip = split(/\./, $ipaddr); $sender = do_sender_substitutions($sender); my ($subnet) = do_client_substitutions($ipaddr,$revdns); # 1.2.3.0 my $key = lc "$ipaddr/$sender/$recipient"; # postgrey key my $subkey = lc "$subnet/$sender/$recipient"; # subnet key 1.2.3.0/sender/recipient # if we are wanting to dump first,last out of the db do it before we determine if its fatal if ( is_debug_host($revdns) ) { foreach my $testkey ( @{[$key,$subkey]} ) { my ($tfirst, $tlast) = split(/,/,$db->{$testkey}); my $tdiff = $tlast - $tfirst; print "$testkey : $db->{$testkey} = " .$tdiff . "s \n"; } } # if --match_clients was specified on command line then move on to the next line unless a match is found if ( scalar(@{$opt{match_clients}}) > 0 ) { next unless ( find_in_array($ipaddr, $opt{MATCH_CLIENT_IPS}) or find_in_array($revdns, $opt{MATCH_CLIENT_PTR}) ); } # if --skip_clients was specified on command line, skip to next line if a match is found next if ( find_in_array($ipaddr, $opt{SKIP_CLIENT_IPS}) or find_in_array($revdns, $opt{SKIP_CLIENT_PTR}) ); # if --skip_pool then if last 2 ips are in ptr skip to next line next if ( $opt{skip_pool} and defined $ip[3] and $revdns =~ /$ip[2]/ and $revdns =~ /$ip[3]/ ); # check the db, proceed if the triplet was fatal next MAILLOG unless is_fatal_triplet($db, $key, $subkey); # if --skip_dnsbl then do RBL lookups (slow!) if ( defined $rbl ) { $rbl->lookup($ipaddr); my @listed = $rbl->listed_by; next if ( scalar(@listed) > 0 ); } # we made it past all the filtering checks, remember the triplet as fatal $triplets->{$key}{counter}++; # increase counter for this triplet $triplets->{$key}{revdns}=$revdns; # save its ptr for later use $triplets->{$key}{ipaddr}=$ipaddr; # save IP in easy to access form $triplets->{$key}{subnet}=$subnet; # save subnet in easy to access form $triplets->{$key}{subkey}=$subkey; # save key in subnet form $triplets->{$key}{entrytime}=substr($_,0,15); } die "Debugging DB active, report shutdown" if ($opt{debug_db}); # don't do anything other than spit out key pairs and stop my @greyfatal = keys %{ $triplets }; # create an array containing all triplets in form: ip/sender/recipient # sort fatal triplets by IP address @greyfatal = sort { pack('C4' => $a =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/) cmp pack('C4' => $b =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/) } @greyfatal; return @greyfatal; } sub find_in_array($$) { my ($var, $patterns) = @_; for my $w (@{$patterns}) { return 1 if $var =~ $w; } return 0; } sub is_fatal_triplet($$$) { my ($db, $key, $subkey) = @_; my ($lapsed_ip, $lapsed_subnet) = (undef,undef); # try lookup by key if ( $db->{$key} =~ /,/ ) { my ($tfirst,$tlast) = split(/,/,$db->{$key}); # time_first_seen,time_last_seen $lapsed_ip = $tlast - $tfirst; # difference is time lapsed } # try subnet lookup if ( $db->{$subkey} =~ /,/ ) { my ($tfirst,$tlast) = split(/,/,$db->{$subkey}); # time_first_seen,time_last_seen $lapsed_subnet = $tlast - $tfirst; } if ( ( defined $lapsed_ip or defined $lapsed_subnet ) and (!( ($lapsed_ip >= $opt{delay} ) or ($lapsed_subnet >= $opt{delay}) ) ) ) { #push (@greyfatal, $key); # if lapsed time less than --delay, then it was a fatal triplet return 1; } elsif (( ! defined $lapsed_ip ) and ( ! defined $lapsed_subnet )) { #push (@greyfatal, $key); # if neither is found in the db it must have been removed. return 1; } return 0; } ########################################################################### # check_sender_mx(sender, ip, subnet) # subnet='' or '/24' # return true if ip is in MX list for sender domain (or /24 if specified) # enable via --check_sender=mx or --check_sender=mx,mx/24 sub check_sender_mx($$$) { my ($sender, $ip, $subnet) = @_; my ($user, $hostname) = split(/\@/,$sender); my @iplist; if ( $dns_cache{$hostname}{mx} ) { @iplist = @{$dns_cache{$hostname}{mx}}; # use the cache for MX records } else { my @mxr = mx($dns, $hostname); # no cache existed, call out to Net::DNS # mx records if ($#mxr >= 0) { foreach my $mxrr (@mxr) { # print "MX for $hostname: ". $mxrr->exchange . "\n"; my $ipquery = $dns->search($mxrr->exchange); if ($ipquery) { foreach my $iprr ($ipquery->answer) { next unless ($iprr->type eq "A"); # print " IP=" . $iprr->address . "\n"; push (@iplist, $iprr->address); } } } } if ( $#iplist < 0 ) { push (@iplist, '0.0.0.0'); } # cache ip of all zero's so we dont keep calling net::dns if nothing is returned $dns_cache{$hostname}{mx} = [ @iplist ]; # cache the array IPs of the MX records into an hash location. } $subnet =~ s/^mx//i; return check_sender_ip_vs_list($ip, $subnet, \@iplist); } ########################################################################### # check_sender_a(sender, ip, subnet) # subnet='' or '/24' # return true if ip is in A record for sender domain (or /24 if specified) # enable via --check_sender=a or --check_sender=a,24 sub check_sender_a($$$) { my ($sender, $ip, $subnet) = @_; my ($user, $hostname) = split(/\@/,$sender); my @iplist; if ( $dns_cache{$hostname}{a} ) { @iplist = @{$dns_cache{$hostname}{a}}; # use the cache'd A records } else { my $ipquery = $dns->search($hostname); # no cache existed, call out to Net::DNS if ($ipquery) { foreach my $iprr ($ipquery->answer) { next unless ($iprr->type eq "A"); # print " IP=" . $iprr->address . "\n"; push (@iplist, $iprr->address); } } if ( $#iplist < 0 ) { push (@iplist, '0.0.0.0'); } # cache ip of all zero's so we dont keep calling net::dns if nothing is returned $dns_cache{$hostname}{a} = [ @iplist ]; # cache the array IPs of the A records into an hash location. } $subnet =~ s/^a//i; return check_sender_ip_vs_list($ip, $subnet, \@iplist); } ################################################### # used by check_sender_mx and check_sender_a # return true if IP is in list # if /24 then return true if first 3 octets match sub check_sender_ip_vs_list($$$) { my ($client_ip, $match, $iplist) = @_; foreach my $ipaddr ( @{$iplist} ) { return 1 if ($client_ip eq $ipaddr); return 0 if (! $match eq '/24'); $client_ip =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.)/; my $client_classaddr = $1; $ipaddr =~ /^(\d{1,3}\.\d{1,3}\.\d{1,3}\.)/; my $ipaddr_classaddr = $1; return 1 if ( $client_classaddr eq $ipaddr_classaddr ); } return 0 } ######################################### # drop_priv(username) # code from Net::Server sub drop_priv { my ($user) = @_; ### drop privileges eval{ if( $user ne $> ){ # print "Setting uid to \"$user\"\n"; set_uid( $user ); } }; if( $@ ){ if( $> == 0 ){ die $@; } elsif( $< == 0){ # print "NOTICE: Effective UID changed, but Real UID is 0: $@\n"; }else{ print $@."\n"; } } } ###########################################3 # setup_dbm(dbdir) # connect to BerkeleyDB *READ_ONLY*, return reference to db hash sub setup_dbm { my ($dbdir) = @_; my %db; tie(%db, 'BerkeleyDB::Btree', -Filename => "$dbdir/postgrey.db", -Flags => DB_RDONLY, ) or die "ERROR: can't find database $dbdir/postgrey.db: $!\n"; return \%db; } # from postgrey 1.14 http://isg.ee.ethz.ch/tools/postgrey/ sub do_sender_substitutions($) { my ($addr) = @_; my ($user, $domain) = split(/@/, $addr, 2); defined $domain or return $addr; # strip extension, used sometimes for mailing-list VERP $user =~ s/\+.*//; # replace numbers in VERP addresses with '#' so that # we don't create a new key for each mail $user =~ s/\b\d+\b/#/g; return "$user\@$domain"; } # from postgrey 1.14 http://isg.ee.ethz.ch/tools/postgrey/ sub do_client_substitutions($$) { my ($ip, $revdns) = @_; # --lookup-by-subnet: return ($ip, undef) if $revdns eq 'unknown'; my @ip=split(/\./, $ip); return ($ip, undef) unless defined $ip[3]; # skip if it contains the last two IP numbers in the hostname # (we assume it is a pool of dialup addresses of a provider) return ($ip, undef) if $revdns =~ /$ip[2]/ and $revdns =~ /$ip[3]/; return (join('.', @ip[0..2], '0'), $ip[3]); } ## used code from postgrey for read_client_whitelists() to import client files sub read_client_files() { my @skip_client_ips; my @skip_client_ptr; my @match_client_ips; my @match_client_ptr; for my $f (@{$opt{'skip_clients'}}) { if(open(CLIENTS, $f)) { while(<CLIENTS>) { s/^\s+//; s/\s+$//; next if $_ eq '' or /^#/; if(/^\/(\S+)\/$/) { # regular expression push @skip_client_ptr, qr{$1}i; } elsif(/^\d{1,3}(?:\.\d{1,3}){0,3}$/) { # IP address or part of it push @skip_client_ips, qr{^$_}; } # note: we had ^[^\s\/]+$ but it triggers a bug in perl 5.8.0 elsif(/^\S+$/) { push @skip_client_ptr, qr{\Q$_\E$}i; } else { warn "WARNING: $f line $.: doesn't look like a hostname\n"; } } } } $opt{SKIP_CLIENT_PTR} = \@skip_client_ptr; $opt{SKIP_CLIENT_IPS} = \@skip_client_ips; for my $f (@{$opt{'match_clients'}}) { if(open(CLIENTS, $f)) { while(<CLIENTS>) { s/^\s+//; s/\s+$//; next if $_ eq '' or /^#/; if(/^\/(\S+)\/$/) { # regular expression push @match_client_ptr, qr{$1}i; } elsif(/^\d{1,3}(?:\.\d{1,3}){0,3}$/) { # IP address or part of it push @match_client_ips, qr{^$_}; } # note: we had ^[^\s\/]+$ but it triggers a bug in perl 5.8.0 elsif(/^\S+$/) { push @match_client_ptr, qr{\Q$_\E$}i; } else { warn "WARNING: $f line $.: doesn't look like a hostname\n"; } } } } $opt{MATCH_CLIENT_PTR} = \@match_client_ptr; $opt{MATCH_CLIENT_IPS} = \@match_client_ips; } sub setup_debug() { if ($opt{debug_db} or $opt{search_db}) { die "\nDebugging_DB Activated, but no matching RE's defined. use --debug_re also! \n " if (! $opt{debug_re} ); print "\nDebugging_DB Active, Displaying hosting matching REs: "; foreach my $RE ( split(/,/,$opt{debug_re}) ) { print "$RE ; "; push ( @{ $opt{debug_RE} }, qr/$RE/i ); } print "\n\n"; } } sub is_debug_host($) { my ($host) = @_; foreach my $RE ( @{$opt{debug_RE}} ) { return 1 if ($host =~ /$RE/); } return 0; } main(); exit 0; __END__ =head1 NAME postgreyreport - Fatal report for Postfix Greylisting Policy Server =head1 SYNOPSIS B<postgreyreport> [I<options>...] -h, --help display this help and exit --version display version and exit --user=USER run as USER (default: postgrey) --dbdir=PATH find db files in PATH (default: /var/spool/postfix/postgrey) --delay=N report triplets that did not try again after N seconds (default: 300) --greylist-text=TXT text to match on for greylist maillog lines --skip_pool Skip report for 'subscriber pools' ( last 2 octets of IP found in PTR name ) --skip_dnsbl=RBL RBL server to query and skip reporting for any listed hosts (SLOW!!) --skip_clients=FILE PTR or IP or REGEXP of clients to skip in report --match_clients=FILE *ONLY* report if fatal *AND* PTR/IP of client matches --show_tries display the number of attempts failed triplets made in first column --show_time show entry time in maillog (single line only) --tab use tabs as separators for easy cut(1)ting --nosingle_line display sender/recipients grouped by ptr - ip --separate_by_subnet=TXT display TXT for every new /24 (ex: "=================\n" ) --separate_by_ip=TXT display TXT for every new IP (ex: "\n") --check_sender=LIST one or more of: mx,mx/24,a,a/24 does DNS/A lookups for sender @domain and compares sending IP if match displays "MX" "A" or "MX/24" or "A/24" depending on LIST Note that --(skip|match)_clients can be specified multiple times and there are no default files. Same rules apply as postgrey's --whitelist-clients, see postgrey doc for more info. --skip_dnsbl can also be specified multiple times to query multiple DNSBL servers. =head1 DESCRIPTION postgreyreport opens postgrey.db as read-only; reads a maillog via STDIN, extracts the triplets for any Greylisted lines and looks them up in postgrey.db. if the difference in first and last time seen is less than --delay=N then the triplet is considered fatal and displayed to STDOUT The report sorts by client IP address =head2 Note: unless you are using --lookup_by_subnet or excluding all known MTA pools you will likely have false fatal reports for "BigISPs". A message that was tried from every IP in SMTP pool before making it through will show up in the report for all of the attempted source IPs =head2 USAGE It is best to run postgreyreport against a maillog that is at least several hours old (yesterdays?) ( you be the judge on how old is acceptable ). if you run the report against a live maillog you are not giving legit MTA's enough time to try again and you will have lots of inaccurate information. =over =item * Ex usage: zcat /var/log/maillog.0.gz | ./postgreyreport [options] > postgreyreport.log or zcat /var/log/maillog.0.gz | \ ./postgreyreport --nosingle_line --check_sender=mx,a \ --separate_by_subnet=":==================\n" # 94 "=" total, some were omitted for clarity =item * Ex Output: ( POD wrapping will mess this up, view source ) :============================================================================================ unknown 4.29.43.31 marissa_mcclendonuu@abit.com.tw user1@recipient1.com jake_meyerdt@ali.com.tw user2@recipient1.com jenny_banks_sh@translate.ru user1@recipient2.com rvazquezpo@ali.com.tw user3@recipient1.com aep@notimexico.com user2@recipient1.com brittneystanley_ei@cetra.org.tw user2@recipient1.com brendasheehan_cw@lib.ru user2@recipient1.com :============================================================================================ lsanca1-ar5-127-189.biz.dsl.gtei.net 4.33.127.189 A fokkensr@lsanca1-ar5-127-189.biz.dsl.gtei.net user2@recipient1.com cyxlfrfwciercu@publicist.com user3@recipient4.com :============================================================================================ smtpout.mac.com 17.250.248.83 do_not_reply@apple.com user4@recipient5.com smtpout.mac.com 17.250.248.88 MX legituser@mac.com user6@recipient7.com :============================================================================================ =back =head1 HISTORY B<1.14.3 20100321> =over 4 Some additions, Leonard den Ottolander <leonard.den.ottolander.nl> New option: --tab Use tabs as separator in single line mode New option: --show_time Show entry time in maillog in single line mode =back B<1.14.2 20040715> =over 4 BUGFIX: (automatic) lookup-by-subnet support was broken, fixed. BUGFIX: corrected a few spelling errors new Option: --skip_pool Skip report for 'subscriber pools' =back B<1.14.1 20040712> =over 4 Changed --return-string to --greylist-text to match postgrey new Option: --skip_clients=FILE new Option: --match_clients=FILE new Option: --skip_dnsbl=RBL.DNS.NAME All 3 of the new options can be specified multiple times. Updated do_*_subsititions again to match postgrey =back B<1.11.1 20040701> =over 4 missing keys from DB are considered fatal triplets and included in report Changed --delay testing from "greater than" to "greater than or equal to" Fixed --help and --man switches Removed setuid Notice =back B<1.6.4 20040618> =over 4 Initial Public Version (postgrey/contrib) =back =head1 AUTHOR S<Tom Baker E<lt>tbaker@bakerfl.orgE<gt>> =cut
Close