Коллеги, мы немного улучшили инструментарий по работе с почтовой системой в VMBitrix v1.15 от 15.12.2009г.
1) Исправлен скрипт настройки электронный почты msmtp_conf.sh
2) Добавлена возможность тестирования электронной почты через php функцию mail()
bash скрипт mail_test.sh запускает php скрипт test_mail.php от пользователя bitrix и
передает ему аргумент содержащий адрес получателя. php скрипт test_mail.php делает выборку адреса отправителя из файла настроек почты /home/bitrix/.msmtprc, формирует полученные данные и отправляет почту через функцию mail().
3) Расширено меню в bash скрипте menu.sh
Все скрипты должны находиться в /root
test_mail.php
[CODE]
<?php
$file_array = file("/home/bitrix/.msmtprc");
$val = array_values(preg_grep ("/from/" , $file_array));
$from_email = str_replace("from ", "", $val[0]);
$to_email = $argv[1];
$subject = "Test-Bitrix";
$message = "Test-Bitrix";
$headers = "From: " .$from_email. "";
mail($to_email, $subject, $message, $headers);
print var_dump($argv);
?>
[/CODE]
mail_test.sh
[CODE]
#!/bin/bash
echo "======================================="
echo " Test mail settings "
echo " Created by Vadim Balabin vbalabin@energosib.ru"
echo "======================================="
echo
read -p "Send E-Mail to: " sendto
php="/usr/bin/php -f /root/test_mail.php $sendto"
m=`su - bitrix -c "$php"`
echo "$m"
[/CODE]
msmtp_conf.sh
[CODE]
#!/bin/sh
conf=/home/bitrix/.msmtprc
echo "======================================="
echo " Mail sending subsystem setting"
echo " Edit by Vadim Balabin vbalabin@energosib.ru"
echo "======================================="
echo
read -p "SMTP server name: " smtp
read -p "SMTP port (press ENTER to leave default value, SMTP port = 25): " port
if [ "$port" = "" ] ; then
port=25
fi
read -p "Default sender address: " sender
read -p "Is SMTP authorization required? (y/n): " auth
if [ "$auth" = "y" ]; then
read -p "Username: " username
read -p "Password: " password
fi
echo "======================================="
echo " Current SMTP authorization parameters"
echo "======================================="
echo SMTP server: $smtp
echo SMTP port: $port
echo Default sender address: $sender
echo "Is SMTP authorization required? (y/n):" $auth
if [ "$auth" = "y" ]; then
echo Username: $username
echo Password: $password
fi
echo "======================================="
read -p "Save changes? (y/n): " save
if [ "$save" = "y" ]; then
file="account default\nlogfile /home/bitrix/.msmtp.log\nhost $smtp\nport $port\nfrom $sender"
if [ "$auth" = "y" ]; then
file="$file\nauth login\nuser $username\npassword $password"
else
file="$file\nauth off"
fi
fi
echo $file > $conf
[/CODE]
menu.sh
[CODE]
#!/bin/sh
export TERM=linux
LOGO="Bitrix virtual appliance"
LOGOV=`set | grep BITRIX_VA_VER | sed 's/BITRIX_VA_VER=//'`
Omenu="0. Virtual appliance information";
amenu="1. Mail sending system parameters";
#bmenu=2". Change Bitrix Portal working port(s): ${vaports}";
#cmenu=3". Change Zend CE management site status: ENABLE <-> DISABLE";
dmenu="4. Change root password";
emenu="5. Change bitrix password";
fmenu="6. Virtual server reboot";
gmenu="7. Virtual server shutdown";
##hmenu=". Get a new IP address via DHCP";
##imenu=". Assign a new IP address (manual)";
jmenu="8. Quit to shell";
tmenu="9. Testing Mail sending system parameters";
badchoice () { MSG="Misleading choice ... Please, try again" ; }
Opick () { /root/info.sh; echo "Press ENTER to continue..."; read ""; }
apick () { passwd ; }
bpick () { /root/dhcp_ip.sh ; }
cpick () { /root/ifcfg_ip.sh ; }
dpick () { /root/msmtp_conf.sh ; }
epick () { [ -f /var/www/.htsecure ] && { rm -rf /var/www/.htsecure ; /etc/init.d/nginx restart >/dev/null 2>&1 ; } || { touch /var/www/.htsecure ; /etc/init.d/nginx restart > /dev/null 2>&1 ; } ; }
#fpick () { [ -z "`ufw status|grep 10082:tcp|grep ALLOW`" ] && ufw allow 10082/tcp > /dev/null 2>&1 || ufw deny 10082/tcp > /dev/null 2>&1 ; }
fpick () { test -z "`/usr/local/zend/bin/lighttpdctl.sh status | grep 'lighttpd is running'`" && /usr/local/zend/bin/lighttpdctl.sh start > /dev/null 2>&1 || /usr/local/zend/bin/lighttpdctl.sh stop > /dev/null 2>&1 ; }
gpick () { passwd bitrix; }
hpick () { reboot ; }
ipick () { init 0 ; }
jpick () { exit ; }
tpick () { /root/mail_test.sh ; }
themenu () {
vaports=`[ -f /var/www/.htsecure ] && echo "HTTP/HTTPS" || echo "HTTPS only"`
#zend0=`ufw status|grep 10082|grep ALLOW`
zend0=`/usr/local/zend/bin/lighttpdctl.sh status | grep 'lighttpd is running'`
zend=`[ -z "$zend0" ] && echo "Enable" || echo "Disable"`
ip_=`ifconfig | grep Bcast|awk '{print $2}'|sed 's/addr://'`
clear
#echo `date`
#echo
#echo "IP address:" ip_
echo "\t\t" $LOGO " version "$LOGOV
echo
echo "To manage your appliance please browse to https://"$ip_":5480"
#[ -z "`ufw status|grep 10082:tcp|grep ALLOW`" ] && echo "Zend control panel is disabled" || echo "To manage ZendServerCE please browse to https://"$ip_":10082/ZendServer"
test -z "$zend0" && echo "Zend control panel is disabled" || echo "To manage Zend Server CE please browse to https://"$ip_":10082/ZendServer"
[ -f /var/www/.htsecure ] && echo "To manage Bitrix please browse to https://"$ip_ || echo "To manage Bitrix please browse to https://"$ip_" or http://"$ip_
echo
#echo "\t" $LOGO " version "$LOGOV
#echo
echo "Available actions:"
echo "\t\t" $Omenu
echo "\t\t" $amenu
echo "\t\t" "2. Set Bitrix working protocol(s): ${vaports}"
echo "\t\t" "3. $zend ZendServerCE control panel"
echo "\t\t" $dmenu
echo "\t\t" $emenu
echo "\t\t" $fmenu
echo "\t\t" $gmenu
echo "\t\t" $jmenu
echo "\t\t" $tmenu
echo
echo $MSG
echo
echo Type a number and press ENTER ;
}
MSG=
while true
do
themenu
read answer
MSG=
case $answer in
0|O) Opick;;
1|A) dpick;;
2|B) epick;;
3|C) fpick;;
4|D) apick;;
5|E) gpick;;
6|F) hpick;;
7|G) ipick;;
8|H) jpick;;
9|T) tpick;;
*) badchoice;;
esac
done
[/CODE]
Пробуем, и радуемся жизни. :D
Хорошо бы это включить в следующие выпуски VMBitrix :idea:
1) Исправлен скрипт настройки электронный почты msmtp_conf.sh
2) Добавлена возможность тестирования электронной почты через php функцию mail()
bash скрипт mail_test.sh запускает php скрипт test_mail.php от пользователя bitrix и
передает ему аргумент содержащий адрес получателя. php скрипт test_mail.php делает выборку адреса отправителя из файла настроек почты /home/bitrix/.msmtprc, формирует полученные данные и отправляет почту через функцию mail().
3) Расширено меню в bash скрипте menu.sh
Все скрипты должны находиться в /root
test_mail.php
[CODE]
<?php
$file_array = file("/home/bitrix/.msmtprc");
$val = array_values(preg_grep ("/from/" , $file_array));
$from_email = str_replace("from ", "", $val[0]);
$to_email = $argv[1];
$subject = "Test-Bitrix";
$message = "Test-Bitrix";
$headers = "From: " .$from_email. "";
mail($to_email, $subject, $message, $headers);
print var_dump($argv);
?>
[/CODE]
mail_test.sh
[CODE]
#!/bin/bash
echo "======================================="
echo " Test mail settings "
echo " Created by Vadim Balabin vbalabin@energosib.ru"
echo "======================================="
echo
read -p "Send E-Mail to: " sendto
php="/usr/bin/php -f /root/test_mail.php $sendto"
m=`su - bitrix -c "$php"`
echo "$m"
[/CODE]
msmtp_conf.sh
[CODE]
#!/bin/sh
conf=/home/bitrix/.msmtprc
echo "======================================="
echo " Mail sending subsystem setting"
echo " Edit by Vadim Balabin vbalabin@energosib.ru"
echo "======================================="
echo
read -p "SMTP server name: " smtp
read -p "SMTP port (press ENTER to leave default value, SMTP port = 25): " port
if [ "$port" = "" ] ; then
port=25
fi
read -p "Default sender address: " sender
read -p "Is SMTP authorization required? (y/n): " auth
if [ "$auth" = "y" ]; then
read -p "Username: " username
read -p "Password: " password
fi
echo "======================================="
echo " Current SMTP authorization parameters"
echo "======================================="
echo SMTP server: $smtp
echo SMTP port: $port
echo Default sender address: $sender
echo "Is SMTP authorization required? (y/n):" $auth
if [ "$auth" = "y" ]; then
echo Username: $username
echo Password: $password
fi
echo "======================================="
read -p "Save changes? (y/n): " save
if [ "$save" = "y" ]; then
file="account default\nlogfile /home/bitrix/.msmtp.log\nhost $smtp\nport $port\nfrom $sender"
if [ "$auth" = "y" ]; then
file="$file\nauth login\nuser $username\npassword $password"
else
file="$file\nauth off"
fi
fi
echo $file > $conf
[/CODE]
menu.sh
[CODE]
#!/bin/sh
export TERM=linux
LOGO="Bitrix virtual appliance"
LOGOV=`set | grep BITRIX_VA_VER | sed 's/BITRIX_VA_VER=//'`
Omenu="0. Virtual appliance information";
amenu="1. Mail sending system parameters";
#bmenu=2". Change Bitrix Portal working port(s): ${vaports}";
#cmenu=3". Change Zend CE management site status: ENABLE <-> DISABLE";
dmenu="4. Change root password";
emenu="5. Change bitrix password";
fmenu="6. Virtual server reboot";
gmenu="7. Virtual server shutdown";
##hmenu=". Get a new IP address via DHCP";
##imenu=". Assign a new IP address (manual)";
jmenu="8. Quit to shell";
tmenu="9. Testing Mail sending system parameters";
badchoice () { MSG="Misleading choice ... Please, try again" ; }
Opick () { /root/info.sh; echo "Press ENTER to continue..."; read ""; }
apick () { passwd ; }
bpick () { /root/dhcp_ip.sh ; }
cpick () { /root/ifcfg_ip.sh ; }
dpick () { /root/msmtp_conf.sh ; }
epick () { [ -f /var/www/.htsecure ] && { rm -rf /var/www/.htsecure ; /etc/init.d/nginx restart >/dev/null 2>&1 ; } || { touch /var/www/.htsecure ; /etc/init.d/nginx restart > /dev/null 2>&1 ; } ; }
#fpick () { [ -z "`ufw status|grep 10082:tcp|grep ALLOW`" ] && ufw allow 10082/tcp > /dev/null 2>&1 || ufw deny 10082/tcp > /dev/null 2>&1 ; }
fpick () { test -z "`/usr/local/zend/bin/lighttpdctl.sh status | grep 'lighttpd is running'`" && /usr/local/zend/bin/lighttpdctl.sh start > /dev/null 2>&1 || /usr/local/zend/bin/lighttpdctl.sh stop > /dev/null 2>&1 ; }
gpick () { passwd bitrix; }
hpick () { reboot ; }
ipick () { init 0 ; }
jpick () { exit ; }
tpick () { /root/mail_test.sh ; }
themenu () {
vaports=`[ -f /var/www/.htsecure ] && echo "HTTP/HTTPS" || echo "HTTPS only"`
#zend0=`ufw status|grep 10082|grep ALLOW`
zend0=`/usr/local/zend/bin/lighttpdctl.sh status | grep 'lighttpd is running'`
zend=`[ -z "$zend0" ] && echo "Enable" || echo "Disable"`
ip_=`ifconfig | grep Bcast|awk '{print $2}'|sed 's/addr://'`
clear
#echo `date`
#echo
#echo "IP address:" ip_
echo "\t\t" $LOGO " version "$LOGOV
echo
echo "To manage your appliance please browse to https://"$ip_":5480"
#[ -z "`ufw status|grep 10082:tcp|grep ALLOW`" ] && echo "Zend control panel is disabled" || echo "To manage ZendServerCE please browse to https://"$ip_":10082/ZendServer"
test -z "$zend0" && echo "Zend control panel is disabled" || echo "To manage Zend Server CE please browse to https://"$ip_":10082/ZendServer"
[ -f /var/www/.htsecure ] && echo "To manage Bitrix please browse to https://"$ip_ || echo "To manage Bitrix please browse to https://"$ip_" or http://"$ip_
echo
#echo "\t" $LOGO " version "$LOGOV
#echo
echo "Available actions:"
echo "\t\t" $Omenu
echo "\t\t" $amenu
echo "\t\t" "2. Set Bitrix working protocol(s): ${vaports}"
echo "\t\t" "3. $zend ZendServerCE control panel"
echo "\t\t" $dmenu
echo "\t\t" $emenu
echo "\t\t" $fmenu
echo "\t\t" $gmenu
echo "\t\t" $jmenu
echo "\t\t" $tmenu
echo
echo $MSG
echo
echo Type a number and press ENTER ;
}
MSG=
while true
do
themenu
read answer
MSG=
case $answer in
0|O) Opick;;
1|A) dpick;;
2|B) epick;;
3|C) fpick;;
4|D) apick;;
5|E) gpick;;
6|F) hpick;;
7|G) ipick;;
8|H) jpick;;
9|T) tpick;;
*) badchoice;;
esac
done
[/CODE]
Пробуем, и радуемся жизни. :D
Хорошо бы это включить в следующие выпуски VMBitrix :idea: