Freelance Karelia
Блог, посвященный фрилансу, заработку в сети и системному администрированию
Фриланс и системное администрирование - почему бы и нет?
Почтовая система на Postfix с виртуальными доменами
Автор Waster | 04.08.2011 | Рубрика Администрирование
Недавно пришлось настраивать почтовую систему начального уровня, поэтому решил написать небольшое HOWTO, чтобы самому не забыть, и предоставить информацию для тех, у кого возникают проблемы.
Что будет включать в себя почтовая система:
- Почтовый сервер Postfix + виртуальные почтовые домены и пользователи
- PostfixAdmin для управления всем хозяйством через web
- Amavisd-new + SpamAssassin + ClamAV для борьбы со спамом и вирусами
- Dovecot в качестве POP3(S) и IMAP(S) сервера, а также LDA
- Механизм квотирования (Maildir++)
- Roundcube для веб-интерфейса к почтовым ящикам
Тестовая система: Ubuntu 11.04 server. Работаю под рутом, поэтому sudo опускаем.
Доменное имя для примера: example.com
1. Установка пакетов и создание пользователя для доступа к виртуальным почтовым ящикам
php5-mcrypt php5-intl amavisd-new spamassassin clamav clamav-daemon dovecot-imapd \
dovecot-pop3d mysql-server
# Почта будет храниться здесь в виде /home/vmail/DOMAINNAME/USERNAME
# Удаленные через PostfixAdmin домены/ящики буду храниться в /home/vmail/DELETED
mkdir -p /home/vmail/DELETED
# !!! UID 111 должен быть свободен, если он занят то выбираем свободный, и везде далее не забываем его поменять !!!
useradd -r -u 111 -g mail -d /home/vmail -s /sbin/nologin -c "Virtual mailbox" vmail
chown -R vmail:mail /home/vmail
chmod 770 /home/vmail
2. Установка PostfixAdmin
PostfixAdmin — веб-интерфейс управления виртуальными почтовыми доменами и пользователями.
Скачиваем последнюю версию с http://sourceforge.net/projects/postfixadmin:
wget POSTFIXADMIN_URL.tar.gz
tar -xvzf postfixadmin-2.x.x.tar.gz
mv postfixadmin-2.x.x postfixadmin
chown -R www-data:www-data postfixadmin
Создаем базу данных:
CREATE DATABASE postfix;
GRANT ALL ON postfix.* TO postfix@localhost IDENTIFIED BY 'postfixpass';
FLUSH PRIVILEGES;
Правим /var/www/postfixadmin/config.inc.php:
$CONF['configured'] = true;
...
$CONF['postfix_admin_url'] = 'http://example.com/postfixadmin';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'postfixpass';
$CONF['database_name'] = 'postfix';
...
$CONF['admin_email'] = 'postmaster@example.com';
...
$CONF['default_aliases'] = array (
'abuse' => 'abuse@example.com',
'hostmaster' => 'hostmaster@example.com',
'postmaster' => 'postmaster@example.com',
'webmaster' => 'webmaster@example.com'
);
...
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
...
$CONF['fetchmail'] = 'NO';
...
$CONF['mailbox_postcreation_script']='/usr/bin/sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postcreation.sh';
$CONF['mailbox_postdeletion_script']='/usr/bin/sudo -u vmail /usr/local/bin/postfixadmin-mailbox-postdeletion.sh';
$CONF['domain_postdeletion_script']='/usr/bin/sudo -u vmail /usr/local/bin/postfixadmin-domain-postdeletion.sh';
...
// Остальные параметры можно изменить по вкусу
Заходим на http://example.com/postfixadmin/setup.php:
Проверяем секцию «Checking for dependencies: «, там все должно быть «ОК».
Задаем «Setup password» и меняем $CONF['setup_password'] на полученный хеш.
Затем вводим новый Setup password, детали суперадмина и добавляем его.
Теперь можно зайти на http://example.com/postfixadmin, используя созданного суперадмина.
Добавляем в /etc/sudoers:
www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postdeletion.sh
www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-domain-postdeletion.sh
www-data ALL=(vmail) NOPASSWD: /usr/local/bin/postfixadmin-mailbox-postcreation.sh
...
Копируем скрипты, которые физически создают/удаляют домены/почтовые ящики после соответственных действий в PostfixAdmin:
cp /var/www/postfixadmin/ADDITIONS/postfixadmin-mailbox-postcreation.sh /usr/local/bin
cp /var/www/postfixadmin/ADDITIONS/postfixadmin-mailbox-postdeletion.sh /usr/local/bin
Правим в этих скриптах параметры basedir и trashbase(где есть):
...
trashbase=/home/vmail/DELETED
После этого нужно создать первый виртуальный домен example.com и хотя бы один ящик (приветственное письмо можно пока не отсылать, все равно не дойдет).
2. Настройка Postfix
Небольшое отступление. Я сознательно отказался от родного в postfix VDA и выбрал Dovecot LDA, поскольку для поддержки квот нужны патч и пересборка deb-пакета. С патчем квоты тоже работают хорошо, но обновление Postfix становится более затруднительным.
Правим /etc/postfix/main.cf:
myhostname = mail.example.com
myorigin = /etc/mailname
mydestination = $myhostname, localhost.example.com, localhost
...
# Таблица просмотра виртуальных доменов
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
# Таблицы просмотра почтовых псевдонимов для виртуальных почтовых доменов/ящиков
virtual_alias_maps =
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
# Таблицы просмотра каталогов для хранения почты
virtual_mailbox_maps =
proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
# !!! GID для группы mail, если он отличается, то здесь и далее меняем !!!
virtual_gid_maps = static:8
virtual_mailbox_base = /home/vmail
virtual_minimum_uid = 111
dovecot_destination_recipient_limit = 1
# Транспорт для виртуальных доменов в virtual_mailbox_domains - Dovecot LDA
virtual_transport = dovecot
virtual_uid_maps = static:111
broken_sasl_auth_clients = yes
# Небольшие ограничения для отсылки, можно добавить и DNSBL, и т.д., кому как хочется
smtpd_recipient_restrictions =
permit_mynetworks,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname
# Добавляем проверку на вирусы и спам через amavisd-new
content_filter = smtp-amavis:[127.0.0.1]:10024
receive_override_options=no_address_mappings
message_size_limit = 10485760
strict_rfc821_envelopes = yes
disable_vrfy_command = yes
smtpd_helo_required = yes
Создаем файлы для таблиц просмотра MySQL, тем самым, связывая Postfix и базу данных для PostfixAdmin.
/etc/postfix/sql/mysql_virtual_domains_maps.cf:
password = postfixpass
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
#query = SELECT domain FROM domain WHERE domain='%s'
#optional query to use when relaying for backup MX
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'
#expansion_limit = 100
/etc/postfix/sql/mysql_virtual_alias_maps.cf:
password = postfixpass
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
#expansion_limit = 100
/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf:
password = postfixpass
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf:
password = postfixpass
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' AND mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf:
user = postfix
password = postfixpass
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' AND alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
/etc/postfix/sql/mysql_virtual_mailbox_maps.cf:
password = postfixpass
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
#expansion_limit = 100
Немного безопасности:
chown -R postfix /etc/postfix/sql
Правим /etc/postfix/master.cf:
pickup fifo n - - 60 1 pickup
-o content_filter=
-o receive_override_options=no_header_body_checks
...
smtp-amavis unix - - - - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
dovecot unix - n n - - pipe
flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop} -n -m ${extension}
3. Настройка Amavisd-new+ClamAV+SpamAssassin
Правим /etc/amavis/conf.d/05-node_id:
$myhostname = "mail.example.com"
...
Правим /etc/amavis/conf.d/15-content_filter_mode (точнее раскомментируем соответствующие строчки):
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
...
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
Правим /etc/amavis/conf.d/21-ubuntu_defaults в соответствиями со своими желаниями:
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_DISCARD;
$final_spam_destiny = D_PASS; # Только помечаем обнаруженный спам
$final_bad_header_destiny = D_PASS; # Только помечаем письмо с плохими заголовками
...
Правим /etc/amavis/conf.d/50-user:
# Добавляем поддержку виртуальных доменов в MySQL
@lookup_sql_dsn = (
['DBI:mysql:database=postfix;host=127.0.0.1;port=3306',
'postfix',
'postfixpass']);
.....
$sql_select_policy = 'SELECT domain FROM domain WHERE CONCAT("@",domain) IN (%k)';
...
Немного безопасности:
Добавляем в /etc/clamav/freshclam.conf:
NotifyClamd /etc/clamav/clamd.conf
Добавляем сервисных пользователей в группы:
adduser amavis clamav
Правим /etc/default/spamassassin:
...
CRON=1
Перезапускаем сервисы:
/etc/init.d/amavis restart
/etc/init.d/clamav-freshclam restart
/etc/init.d/clamav-daemon restart
4. Настройка Dovecot (IMAP,POP3,LDA)
Правим /etc/dovecot/dovecot.conf:
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
...
mail_location = maildir:/home/vmail/%d/%u
...
# !!! Не забываем проверить uid для vmail и gid для mail !!!
mail_uid = 111
mail_gid = 8
...
first_valid_uid = 111
last_valid_uid = 111
first_valid_gid = 8
last_valid_gid = 8
...
protocol imap {
...
mail_plugins = quota imap_quota
imap_client_workarounds = delay-newmail netscape-eoh
}
protocol pop3 {
...
mail_plugins = quota
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
...
postmaster_address = postmaster@example.com
mail_plugins = quota
}
...
auth_default_realm = example.com
auth default {
mechanisms = plain login
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
...
socket listen {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
group = mail
}
}
...
plugin {
quota = maildir:User quota
# Квота по умолчанию, затем переопределяется SQL-запросом userdb
quota_rule = storage=50M:messages=1000
# Дополнительная квота к корзине, чтобы можно было удалять сообщения при превышении квоты
quota_rule2 = Trash:storage=10M
# Сообщение об исчерпании 80% квоты
quota_warning = storage=80%% /usr/local/bin/quota-warning.sh 80
...
}
Правим /etc/dovecot/dovecot-sql.conf:
driver = mysql
connect = host=127.0.0.1 dbname=postfix user=postfix password=postfixpass
# Не забываем про uid и gid
password_query = SELECT username as user, password, concat('/home/vmail/', maildir) as userdb_home, concat('maildir:/home/vmail/', maildir) as userdb_mail, 111 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
user_query = SELECT concat('/home/vmail/', maildir) as home, concat('maildir:/home/vmail/', maildir) as mail, 111 AS uid, 8 AS gid, concat('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND active = '1'
...
Копируем dovecot.conf в dovecot-nowarning.conf и комментируем строчку:
# Необходимо во избежание цикла
#quota_warning = storage=80%% /usr/local/bin/quota-warning.sh 80
...
Создаем /usr/local/bin/quota-warning.sh:
PERCENT=$1
cat << EOF | /usr/lib/dovecot/deliver -d $USER -c /etc/dovecot/dovecot-nowarning.conf
From: postmaster@example.com
Subject: quota warning
Your mailbox is now $PERCENT% full. Please delete unnecessary emails.
EOF
На всякий случай устанавливаем бит выполнения на скрипты:
Перезапускаем сервис:
5. Установка Roundcube
Качаем и распаковываем последнюю версию:
wget ROUNDCUBE_URL
tar -xvzf roundcubemail-X.X.X.tar.gz
mv roundcubemail-X.X.X mail
chown -R www-data:www-data mail
Создаем базу данных для Roundcube:
>CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
>GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'password';
>FLUSH PRIVILEGES;
cd /var/www/mail
mysql -u root -p roundcubemail < SQL/mysql.initial.sql
Идем на http://example.com/mail/installer/ и следуем инструкциям.
Удаляем каталог installer:
Правим /var/www/mail/config/main.inc.php в соответствии с нуждами, например:
$rcmail_config['default_host'] = 'localhost';
$rcmail_config['smtp_server'] = 'localhost';
$rcmail_config['smtp_port'] = 25;
$rcmail_config['smtp_user'] = '';
$rcmail_config['smtp_pass'] = '';
$rcmail_config['enable_caching'] = false;
$rcmail_config['login_lc'] = true;
$rcmail_config['auto_create_user'] = true;
$rcmail_config['dont_override'] = array('skin','default_imap_folders','keep_alive');
$rcmail_config['identities_level'] = 3;
$rcmail_config['create_default_folders'] = true;
$rcmail_config['protect_default_folders'] = true;
$rcmail_config['spellcheck_languages'] = array('en'=>'English');
$rcmail_config['preview_pane'] = true;
$rcmail_config['skip_deleted'] = true;
...
По умолчанию, Apache в Ubuntu не обрабатывает .htaccess в директории /var/www, поэтому правим /etc/apache2/sites-available/default:
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Перезапускаем Apache:
На этом основная настройка почтовой системы закончена, остается создавать домены, почтовые ящики, проверить отсылку/чтение почты. Важное DNS-замечание: необходимо не забыть прописать MX-запись для домена (example.com) в виде mail.example.com и A-запись для mail.example.com, чтобы почта корректно стала ходить извне.
Естественно, что эта почтовая система начального уровня для небольших нагрузок, хотя дальнейшие усовершенствования обязательно нужны, будь то SMTP-аутентификация, DNSBL, грейлистинг, проверка заголовков и др., тем более, что реализуются они сравнительно просто.
Данная запись писалась по горячим следам, вполне возможно, что некоторые детали могли быть упущены, поэтому, как говорится, /var/log/ в помощь..8)
Plymouth и NVIDIA
Автор Waster | 22.05.2011 | Рубрика Полезности
Недавно у меня возникла проблема со splash-заставкой Plymouth на обновленной Ubuntu Natty, а именно возникала странная задержка перед появлением темы заставка (иногда даже и она не успевала появляться до GDM). Чинится это следующим образом:
chmod +x fixplymouth-natty
sudo ./fixplymouth-natty
После запуска скрипт спросит нужное разрешение и внесет необходимые изменения в конфигурации GRUB, Plymouth и др. Поддерживаются как GRUB, так и BURG.
Кому интересно, может изучить этот скрипт и посмотреть, какие именно файлы правит/создает, чтобы в случае чего можно было откатиться обратно.
Ссылки:
Организация видеотрансляции на сайте. VLC+Red5+Xuggler+steamStream.
Автор Waster | 02.08.2010 | Рубрика Администрирование
В этот раз я поделюсь рабочим решением для организации видеотрансляции в основе которого лежит связка Red5 и steamStream. Red5 — это RTMP-сервер с открытым исходным кодом, а steamStream — приложение Red5, которое по сути является рестримером RTP в RTMP. В качестве вспомогательных, но не менее важных «рабочих лошадок» будут выступать VLC и Xuggler (работа с видео при помощи Java).
Этот вариант трансляции, на мой взгляд, более «правильный» по сравнению со способом трансляции через VLC, описанным ранее, поскольку использует протокол RTMP, а не гонит FLV напрямую. Недостатки тоже есть: сложное решение, необходимость компиляции steamStream, и работает с Red5 до определенной ревизии SVN (было выяснено опытным путем).
Исходная система:ОС Debian Squeeze и камера Axis с MPEG-4 видео.
1. Установка VLC
# Подготовка
cd /usr/local/src
apt-get install make automake g++ gcc autoconf ffmpeg lua5.1 liblua5.1-0-dev libtag1-dev \
libdvbpsi-dev libcdio-dev libvcdinfo-dev libcddb2-dev libmad0-dev libavcodec-dev libavutil-dev \
libavformat-dev libswscale-dev libpostproc-dev libfaad-dev liba52-0.7.4-dev libmpeg2-4-dev \
libzvbi-dev libflac-dev
# Установка liveMedia
wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz
tar -xvzf live555-latest.tar.gz
cd live
./genMakefiles linux
make
cd /usr/local/src
cp -r live/ vlc-1.1.0/extras/
# VLC
wget http://download.videolan.org/pub/videolan/vlc/1.1.0/vlc-1.1.0.tar.bz2
bzip2 -d vlc-1.1.0.tar.bz2
tar xvf vlc-1.1.0.tar
cd vlc-1.1.0
./configure --enable-faad --disable-remoteosd --disable-qt4 --disable-skins2 --disable-activex \
--disable-v4l2 --disable-libv4l2 --disable-xvideo --disable-glx --disable-opengl --disable-visual \
--enable-realrtsp --enable-flac --with-live555-tree=extras/live \
--disable-dbus --disable-xcb > /tmp/1 2> /tmp/2
# В файле /tmp/2 можно будет смотреть ошибки и предупреждения процесса конфигурирования
# Если будет какая-нибудь ошибка, то необходимо установить соответствующий пакет Debian и
# запустить configure еще раз
make
adduser ipcam
cp -r /usr/local/src/vlc-1.1.0 /home/ipcam/vlc
chown -R /home/ipcam/vlc ipcam:ipcam
#!Запускать vlc от пользователя ipcam!
2. Установка Red5:
# Не знаю, как на данный момент, но подозреваю, что ситуация осталась та же.
wget http://flance.onego.ru/files/red5/red5_0.9.0-r3894_all.deb
dpkg -i red5_0.9.0-r3894_all.deb
3. Установка Xuggler:
chmod +x xuggle-xuggler.3.4.1012-i686-pc-linux-gnu.sh
./xuggle-xuggler.3.4.1012-i686-pc-linux-gnu.sh
Добавить
export LD_LIBRARY_PATH=$XUGGLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$XUGGLE_HOME/bin:$PATH
в начало /usr/lib/red5/red5.sh
4. Установка steamStream:
# Не забыть, что sun-java6-jdk находится в non-free пакетах
apt-get install sun-java6-jdk ant
# steamStream
wget http://flance.onego.ru/files/steamStream/steamStream.tar.gz
tar -xvzf steamStream.tar.gz
cp -r steamStream /usr/lib/red5/webapps
chown -R ipcam:ipcam /usr/lib/red5/webapps/steamStream/sdpdescriptors
# Jetm - необходимо для запуска
wget "http://downloads.sourceforge.net/project/jetm/jetm/jetm-1.2.3/jetm-1.2.3.tar.gz?use_mirror=citylan&ts=1280727327"
tar -xvzf jetm-1.2.3.tar.gz
cp jetm-1.2.3/lib/*.jar /usr/lib/red5/lib
# Копируем необходимы библиотеки для компиляции steamStream
cp /usr/local/xuggler/share/java/jars/xuggle-xuggler.jar /usr/lib/red5/lib
wget http://xuggle.googlecode.com/svn/trunk/repo/share/java/xuggle/xuggle-xuggler-red5/3.1.875.200908131110/xuggle-xuggler-red5-3.1.875.200908131110.jar
cp xuggle-xuggler-red5-3.1.875.200908131110.jar /usr/lib/red5/lib
Корректируем некоторые файлы в /usr/lib/red5/webapps/steamStream/WEB-INF/src/steamStream:
Application.java:
smf.setVideoHeight(HEIGHT);
где WIDTH,HEIGHT — размер картинки с камеры
ReStreamer.java:
...
private final int frNumerator = FPS;
где TSINTERVAL должно быть равным 1000000/FPS, например, если FPS = 10 кадров в сек., то TSINTERVAL = 100000. FPS — частота кадров видео с камеры.
Компилируем steamStream:
ant compile
# Должно получиться «BUILD SUCCESSFUL»
5. Запуск red5:
Проверяем логи в /usr/lib/red5/log/ на наличие ошибок.
6. Запуск VLC:
Создаем файл /home/ipcam/config со следующим содержанием:
setup teststream input <URL видеопотока с камеры>
setup teststream output "#rtp{dst=127.0.0.1,port=10000,sdp=file:///usr/lib/red5/webapps/steamStream/sdpdescriptors/stream.sdp}"
control teststream play
Создаем скрипт запуска /home/ipcam/start_vlc.sh со следующим содержанием:
Запускаем и проверяем наличие файла /usr/lib/red5/webapps/steamStream/sdpdescriptors/stream.sdp
К сожалению, и VLC имеет свойство иногда вырубаться, поэтому для стабильности лучше всего написать watchdog
.
7. Интеграция в HTML:
wget http://www.longtailvideo.com/jw/upload/mediaplayer.zip
# Распаковываем и кладем файлы player.swf и swfobject.js в один каталог с предполагаемой
# HTML-страницей, где будем показывать видео
Добавляем следующий HTML-код в страницу:
<div id="mplayer">this will be replaced by the SWF.</div>
<script type="text/javascript">// <![CDATA[
var so = new SWFObject('player.swf','player','480','360','9');
so.addParam('allowfullscreen','true');
so.addParam('flashvars','streamer=rtmp://<адрес сервера с запущенным Red5>/steamStream&provider=rtmp&file=stream.flv&bufferlength=0&autostart=true&controlbar=none&displayclick=fullscreen');
so.write('mplayer');
// ]]>
</script>
Открываем страничку и смотрим. Если видео не пошло — проверяем логи в /usr/lib/red5/log/.
P.S. В скором времени собираюсь также проверить вариант использования еще одного RTMP-сервера — Erlyvideo, который активно и с энтузиазмом на данный момент разрабатывается.
Ссылки:
- http://www.videolan.org
- http://code.google.com/p/red5/
- http://red5wiki.com/wiki/SteamStream
- http://www.xuggle.com/xuggler/
- http://erlyvideo.org/
- http://www.live555.com/liveMedia
- http://www.longtailvideo.com/players/jw-flv-player
Вышел DSPAM 3.9.0
Автор Waster | 31.01.2010 | Рубрика Администрирование
12.01.2010 наконец вышла долгожданная новая версия 3.9.0 антиспамового движка DSPAM. Новость более, чем знаковая, поскольку изначально разработанный и поддерживаемый Jonathan Zdziarski в 2003-2007 году он был заново принят на разработку сообществом dspam-community лишь в январе 2009 (пропускаем Sensory Networks).
Список нововведений и изменений по сравнению с 3.8.0 впечатляет:
- Наконец, добавлены шаблоны и многоязыковая поддержка в Web-UI.
- Множество исправлений в драйвера работы с базами данных.
- Новые опции конфигурирования
- И т.д.
Ссылки:
Неправильная цветопередача в Ubuntu 9.10 + NVIDIA
Автор Waster | 27.12.2009 | Рубрика Полезности
Недавно нужно было посмотреть в онлайне передачу, но к моему удивлению, картинка оказалась неправильной по цвету, в сине-бело-черных тонах. Причем VLC проигрывал так же, что с большой вероятностью указывало на то, что проблемы в драйверах NVIDIA.
Для временного исправления пришлось сделать:
xvattr -a XV_HUE -v 0
Ссылки:
Текущие проекты
Рубрики
- Freelance (8)
- Администрирование (10)
- Всячина (7)
- Полезности (12)
Сейчас на сайте
-
Максимум посетителей (28) был 03.12.2010 в 13:18
Популярные
- Автоматическая проверка статуса посылки на russianpost.ru - 26 555 просмотра(ов)
- Организация видеотрансляции на сайте - 13 054 просмотра(ов)
- Организация видеотрансляции на сайте. VLC+Red5+Xuggler+steamStream. - 10 872 просмотра(ов)
- Передача видео с IP-камер D-Link - 9 013 просмотра(ов)
- Потоковое Flash-Video + ClipShare - 2 985 просмотра(ов)
Теги
-
проблема проект swfobject помощь bid FAQ webcasting payoneer escrow account ip-камера 8.04 рейтинг Freelance apache project vlc scriptlance flash video getafreelancer поток комиссия withdraw money дополнительный заработок фриланс fee ставка coder arbitration rentacoder debian flv заказ flash установка nvidia ffmpeg flash-плеер трансляция ubuntu webcast видеопоток вывод денег flv streaming youtube deadline
Время
- MSK: 2012-01-28 14:53
- GMT: 2012-01-28 10:53
- CET: 2012-01-28 11:53
- EST: 2012-01-28 05:53
Календарь
-
Январь 2012 Пн Вт Ср Чт Пт Сб Вс « Авг 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Архивы
- Август 2011 (1)
- Май 2011 (1)
- Август 2010 (1)
- Январь 2010 (1)
- Декабрь 2009 (2)
- Ноябрь 2009 (1)
- Октябрь 2009 (2)
- Июнь 2009 (1)
- Апрель 2009 (3)
- Март 2009 (1)
- Февраль 2009 (3)
- Январь 2009 (2)
- Сентябрь 2008 (2)
- Июнь 2008 (4)
- Май 2008 (12)
