Blame
Date:
Fri Dec 17 13:35:57 2021 UTC
Message:
Imported sources
001
2021-12-17
jrmu
#!/usr/bin/perl
002
2021-12-17
jrmu
003
2021-12-17
jrmu
package Mail;
004
2021-12-17
jrmu
005
2021-12-17
jrmu
use strict;
006
2021-12-17
jrmu
use warnings;
007
2021-12-17
jrmu
use OpenBSD::Pledge;
008
2021-12-17
jrmu
use OpenBSD::Unveil;
009
2021-12-17
jrmu
use MIME::Base64;
010
2021-12-17
jrmu
use Digest::SHA qw(sha256_hex);
011
2021-12-17
jrmu
012
2021-12-17
jrmu
my %conf = %main::conf;
013
2021-12-17
jrmu
my $staff = $conf{staff};
014
2021-12-17
jrmu
my $hostname = $conf{hostname};
015
2021-12-17
jrmu
my $mailfrom = $conf{mailfrom};
016
2021-12-17
jrmu
my $mailname = $conf{mailname};
017
2021-12-17
jrmu
main::cbind("msg", "-", "mail", \&mmail);
018
2021-12-17
jrmu
019
2021-12-17
jrmu
sub init {
020
2021-12-17
jrmu
#dependencies for encrypt
021
2021-12-17
jrmu
unveil("/usr/bin/encrypt", "rx") or die "Unable to unveil $!";
022
2021-12-17
jrmu
#dependencies for mail
023
2021-12-17
jrmu
unveil("/usr/sbin/sendmail", "rx") or die "Unable to unveil $!";
024
2021-12-17
jrmu
unveil("/usr/lib/libutil.so.13.1", "r") or die "Unable to unveil $!";
025
2021-12-17
jrmu
unveil("/bin/sh", "rx") or die "Unable to unveil $!";
026
2021-12-17
jrmu
}
027
2021-12-17
jrmu
sub mmail {
028
2021-12-17
jrmu
my ($bot, $nick, $host, $hand, $text) = @_;
029
2021-12-17
jrmu
if ($staff !~ /$nick/) { return; }
030
2021-12-17
jrmu
if ($text =~ /^([-_0-9a-zA-Z~@!\.]{3,})\s+([-_0-9a-zA-Z~@!\.]{3,})/) {
031
2021-12-17
jrmu
my ($from, $to) = ($1, $2);
032
2021-12-17
jrmu
if (mail($from, $to, "support", "alpha bravo", "charlie delta echo foxtrot")) {
033
2021-12-17
jrmu
main::putserv($bot, "PRIVMSG $nick :mail sent from $from to $to");
034
2021-12-17
jrmu
} else {
035
2021-12-17
jrmu
main::putserv($bot, "PRIVMSG $nick :ERROR: failed to send mail");
036
2021-12-17
jrmu
}
037
2021-12-17
jrmu
}
038
2021-12-17
jrmu
}
039
2021-12-17
jrmu
040
2021-12-17
jrmu
sub mail {
041
2021-12-17
jrmu
my( $from, $to, $fromname, $subject, $body )=@_;
042
2021-12-17
jrmu
my $msg = <<"EOF";
043
2021-12-17
jrmu
From: $from
044
2021-12-17
jrmu
To: $to
045
2021-12-17
jrmu
Subject: $subject
046
2021-12-17
jrmu
MIME-Version: 1.0
047
2021-12-17
jrmu
Content-Type: text/plain; charset=us-ascii
048
2021-12-17
jrmu
Content-Disposition: inline
049
2021-12-17
jrmu
050
2021-12-17
jrmu
$body
051
2021-12-17
jrmu
EOF
052
2021-12-17
jrmu
open(my $fh, "| /usr/sbin/sendmail -tv -F '$fromname' -f $from") or die "Could not send mail $!";
053
2021-12-17
jrmu
print $fh $msg;
054
2021-12-17
jrmu
close $fh;
055
2021-12-17
jrmu
return "true";
056
2021-12-17
jrmu
}
057
2021-12-17
jrmu
058
2021-12-17
jrmu
059
2021-12-17
jrmu
#sub mailfinish {
060
2021-12-17
jrmu
# my( $username, $password, $email, $service )=@_;
061
2021-12-17
jrmu
#my $msg = <<"EOF";
062
2021-12-17
jrmu
#From: support \<support\@ircnow.org\>
063
2021-12-17
jrmu
#To: $email
064
2021-12-17
jrmu
#Subject: Welcome to IRCNow!
065
2021-12-17
jrmu
#MIME-Version: 1.0
066
2021-12-17
jrmu
#Content-Type: text/plain; charset=us-ascii
067
2021-12-17
jrmu
#Content-Disposition: inline
068
2021-12-17
jrmu
#
069
2021-12-17
jrmu
#Welcome to IRCNow!
070
2021-12-17
jrmu
#
071
2021-12-17
jrmu
#Your account $username with password $password is now activated.
072
2021-12-17
jrmu
#
073
2021-12-17
jrmu
#For instructions on how to connect, please visit: https://ircnow.org
074
2021-12-17
jrmu
#
075
2021-12-17
jrmu
#For help, please visit our support channel on irc.ircnow.org #ircnow.
076
2021-12-17
jrmu
#
077
2021-12-17
jrmu
#IRCNow
078
2021-12-17
jrmu
#EOF
079
2021-12-17
jrmu
#open(my $fh, '| /usr/sbin/sendmail -tv -F support -f support@ircnow.org') or die "Could not send mail $!";
080
2021-12-17
jrmu
#print $fh $msg;
081
2021-12-17
jrmu
#close $fh;
082
2021-12-17
jrmu
#open($fh, '>>', "$database") or die "Could not open file '$database' $!";
083
2021-12-17
jrmu
#print $fh $msg;
084
2021-12-17
jrmu
#close $fh;
085
2021-12-17
jrmu
#}
086
2021-12-17
jrmu
#
087
2021-12-17
jrmu
088
2021-12-17
jrmu
#sub createmail {
089
2021-12-17
jrmu
# my ($password, $username) = @_;
090
2021-12-17
jrmu
# my $encrypted = `encrypt $password`;
091
2021-12-17
jrmu
# chomp($encrypted);
092
2021-12-17
jrmu
# my $line = "${username}\@ircnow.org:${encrypted}::::::userdb_quota_rule=*:storage=1G";
093
2021-12-17
jrmu
# $line =~ s{\$}{\\\$}g;
094
2021-12-17
jrmu
# my $line2 = "${username}\@ircnow.org vmail";
095
2021-12-17
jrmu
# my $line3 = "${username}: ${username}\@ircnow.org";
096
2021-12-17
jrmu
# `doas sh -c 'echo $line >> /etc/mail/passwd'`;
097
2021-12-17
jrmu
# `doas sh -c 'echo $line2 >> /etc/mail/virtuals'`;
098
2021-12-17
jrmu
# `doas sh -c 'echo $line3 >> /etc/mail/aliases'`;
099
2021-12-17
jrmu
# `doas rcctl restart smtpd`;
100
2021-12-17
jrmu
# `doas rcctl reload dovecot`;
101
2021-12-17
jrmu
#}
102
2021-12-17
jrmu
103
2021-12-17
jrmu
1; # MUST BE LAST STATEMENT IN FILE
IRCNow