<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Takahisa's Weblog &#187; Uncategorized</title>
	<atom:link href="http://takahisa.info/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://takahisa.info</link>
	<description>weblog of lifetips?</description>
	<lastBuildDate>Thu, 27 May 2010 08:51:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Setup dkim on postfix with amavisd-new</title>
		<link>http://takahisa.info/2010/03/11/setup-dkim-on-postfix-with-amavisd-new/</link>
		<comments>http://takahisa.info/2010/03/11/setup-dkim-on-postfix-with-amavisd-new/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 05:26:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[amavisd]]></category>
		<category><![CDATA[dkim]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://takahisa.info/?p=248</guid>
		<description><![CDATA[step by step instruction coming soon&#8230;
Setting up DKIM mail signing and verification from http://www.ijs.si/software/amavisd/
Setting up DKIM mail signing and verification
A DKIM standard (RFC 4871) states the following, which applies
to its predecessor DomainKeys (historical: RFC 4870) as well:


DomainKeys Identified Mail (DKIM) defines a mechanism by which email
messages can be cryptographically signed, permitting a signing domain
to claim [...]]]></description>
			<content:encoded><![CDATA[<p>step by step instruction coming soon&#8230;</p>
<p>Setting up DKIM mail signing and verification from http://www.ijs.si/software/amavisd/</p>
<h2><a name="dkim">Setting up DKIM mail signing and verification</a></h2>
<p>A DKIM standard (RFC 4871) states the following, which applies<br />
to its predecessor DomainKeys (historical: RFC 4870) as well:</p>
<blockquote>
<p><i><br />
DomainKeys Identified Mail (DKIM)</i> defines a mechanism by which email<br />
messages can be cryptographically signed, permitting a signing domain<br />
to claim responsibility for the introduction of a message into the<br />
mail stream.  Message recipients can verify the signature by querying<br />
the signer&#8217;s domain directly to retrieve the appropriate public key,<br />
and thereby confirm that the message was attested to by a party in<br />
possession of the private key for the signing domain.</p>
</blockquote>
<blockquote>
<p>The <i>DomainKeys</i> specification was a primary source from which the<br />
<i>DomainKeys Identified Mail [DKIM]</i> specification has been derived.<br />
The purpose in submitting the RFC 4870 document is as an historical reference<br />
for deployed implementations written prior to the DKIM specification.</p>
</blockquote>
<p>The main advantage of DKIM signing <b>to sending domains</b><br />
is that it allows recipients to reliably validate mail origin for<br />
purposes of <b>whitelisting</b> on spam checks and whitelisting<br />
reception of otherwise banned mail contents. By signing outbound<br />
mail you give your correspondents a chance to distinguish between<br />
your genuine mail, and fraud or spam mail which may happen to carry<br />
your domain name as a sender address. Signing outbound mail is a<br />
<b>kind gesture towards recipients</b>, making it much easier for them<br />
to <b>treat your mail as important or desirable</b> if they choose so.</p>
<p>The main advantage of DKIM signature verification <b>to recipients</b><br />
is that it allows them to reliably distinguish genuine mail originating<br />
from a claimed sending domain from other (possibly faked) mail. It<br />
makes <b>signature-based whitelisting</b> a <b>reliable</b> mechanism.<br />
It also makes it possible to recognize and automatically discard<br />
<b>fake mail</b> claiming to be from domains which are known to always<br />
sign their outbound mail and to always send mail directly. Coupled<br />
with <b>reputation</b> schemes (mostly manual/static at present,<br />
or dynamic in the future) makes it possible to assign score points<br />
(positive or negative) based on merit and past experience<br />
with each signing domain. A valid signature also offers<br />
<b>non-repudiation</b>: a domain which signed a message can not<br />
disclaim message origin, which offers recipient a strong argument<br />
when <b>reporting abuse</b> to the signing domain.</p>
<h3><a name="dkim-impatient">For the impatient &#8211; signing from scratch</a></h3>
<p>Here is a quick Spartanic setup of DKIM signing and DKIM/DK<br />
verification by amavisd for the impatient, without much explanation,<br />
assuming all originating mail comes from internal networks (not<br />
from authenticated roaming clients), only one domain needs<br />
signing, using default signature tags, no milters are in use<br />
and no mailing list manager needs signing. No changes in Postfix<br />
configuration is necessary for this simple setup. For more<br />
information and more complex setups please see sections<br />
further on.</p>
<p>Generate a signing key:</p>
<pre>  $ amavisd genrsa /var/db/dkim/example-foo.key.pem
</pre>
<p>add to amavisd.conf:</p>
<pre>  $enable_dkim_verification = 1;
  $enable_dkim_signing = 1;
  dkim_key('example.com', 'foo', '/var/db/dkim/example-foo.key.pem');
  @dkim_signature_options_bysender_maps = (
    { '.' =&gt; { ttl =&gt; 21*24*3600, c =&gt; 'relaxed/simple' } } );
  @mynetworks = qw(0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12
                   192.168.0.0/16);  # list your internal networks
</pre>
<p>run:</p>
<pre>  $ amavisd showkeys
</pre>
<p>add the public key (as displayed) to your DNS zone, increment SOA<br />
sequence number and reload DNS; then test signing and a published key:</p>
<pre>  $ amavisd testkeys
</pre>
<p>if all went well:</p>
<pre>  $ amavisd reload
</pre>
<h3><a name="dkim-impatient-from-milter">For the impatient &#8211; replacing<br />
signing by dkim-milter with signing by amavisd</a></h3>
<p>For sites already signing their mail by dkim-milter, most work<br />
of preparing signing keys and publishing public keys in DNS has<br />
already been done. All it needs to be done is to declare these<br />
signing keys in amavisd.conf and turn on $enable_dkim_signing.</p>
<p>To facilitate transition of DKIM signing from dkim-milter to amavisd-new,<br />
a new command-line tool is available with amavisd-new-2.6.2 (the extra<br />
utility code is not loaded during normal operation), taking a file name<br />
as its argument, e.g.:</p>
<pre>  $ amavisd convert_keysfile /var/db/dkim/keysfile.txt
</pre>
<p>and writing to stdout a set of lines that may be directly included into<br />
amavisd.conf configurations file, matching semantics of a dkim-filter<br />
keys file. It can be useful during transition, or for those who prefer<br />
to specify signing keys and sender-to-key mappings as a file in a syntax<br />
compatible with options -K -k of dkim-filter, and can live with limitations<br />
of such syntax. See dkim-filter(8) man page for details on the<br />
syntax.</p>
<p>The produced output consists of signing key declarations (calls to<br />
a procedure dkim_key), where each call normally corresponds to exactly<br />
one DNS resource record publishing a corresponding DKIM public key.<br />
When necessary output also produces an assignment to a list of lookup<br />
tables @dkim_signature_options_bysender_maps, which supplies non-default<br />
mappings of sender domains to signing keys, e.g. when third-party<br />
signatures are desired.</p>
<h3><a name="dkim-mail-flow">Implementation and mail flow</a></h3>
<p>Signing of originating mail (or mail being redistributed by our domain),<br />
and verifying signatures of incoming mail are two tasks that can be<br />
performed by the same program, or they can be performed by separate entities.<br />
Traditionally with sendmail, both tasks are performed by one milter,<br />
which may be easier to maintain, but has certain disadvantages.</p>
<p>Verifying signatures should be performed early, before any local mail<br />
transformations get a chance of invalidating a signature, e.g. by performing<br />
MIME conversions to quote-printable, by fixing syntactically invalid mail<br />
header section, by reformatting or reordering some header fields (some MTAs<br />
do it frivolously), by modifying/inserting/removing certain header<br />
fields, or by a local mailing list modifying mail text, e.g. by appending<br />
footers.</p>
<p>Signing outgoing mail should be performed late, after mail sanitation,<br />
after conversion to 7-bit characters (to avoid later uncontrollable<br />
changes by a relaying or receiving MTA), and after editing header<br />
section by a content filter. Similar applies to local mailing lists,<br />
which may be rewriting messages, requiring them to be re-signed by<br />
the domain hosting a mailing list, just before being sent out.</p>
<p>Starting with amavisd-new version 2.6.0, DKIM signing can be<br />
performed directly by amavisd (using a Perl module Mail::DKIM,<br />
which is the same module as used by DKIMproxy and by SpamAssassin).<br />
Signing directly by amavisd reduces setup complexity using a milter<br />
or DKIMproxy, and avoids additional data transfers. Regarding mail<br />
flow through the system there are similarities between signing in<br />
amavisd and signing by dkim-milter, which is why the diagram below<br />
shows both possibilities.</p>
<p>For verification there are three choices: either amavisd itself<br />
can do it by calling Mail::DKIM directly, or a SpamAssassin plugin<br />
can do it by calling the same Perl module, or a milter in<br />
verification-only mode can be invoked by an incoming Postfix<br />
smtpd service.</p>
<p>Advantage of invoking signature <i>verification by amavisd</i><br />
is that <i>all mail is checked</i> for signatures, regardless of<br />
whether SpamAssassin is called or not. Typically messages beyond<br />
a certain size are not passed to SpamAssassin, and neither are<br />
infected message or identified bounces. Amavisd also offers loading<br />
of policy banks based on valid DKIM/DK signatures (e.g. allowing<br />
some domains to send-in otherwise banned files, or whitelisting on<br />
spam), offers to add score points based on signing domain reputation,<br />
and adds Authentication-Results header field (like a dkim-milter<br />
does).</p>
<p>Invoking signature <i>verification by SpamAssassin</i> has an<br />
advantage that DKIM-based or DomainKeys-based whitelisting or scoring<br />
can be used, but has a disadvantage that possibly not all mail is<br />
checked (e.g. large mail and infected mail may be exempt from spam<br />
checks). Performing the same signature validation task twice (by<br />
amavisd and by SA) may seem wasteful, but in practice it is not<br />
too bad: thanks to DNS server caching a network lookup for a<br />
public signing key is only done once, and as SpamAssassin does not<br />
receive large mail for processing, its signature verification is<br />
very quick: few milliseconds for non-signed mail, and of the order<br />
of a tenth of a second for signed mail.</p>
<p>Invoking signature <i>verification by calling a milter</i> from<br />
incoming smtpd service has an advantage that it has the best chance<br />
of seeing mail in its pristine form (before canonical and virtual<br />
mapping or masquerading by MTA, regardless of their settings).<br />
Because it is poorly integrated with the rest of the chain (e.g. with<br />
SpamAssassin rules and amavisd policy banks), and because it adds<br />
one extra data transfer, it is mainly still useful as a way to<br />
double-check the correctness of DKIM validation by having two<br />
independent implementations in use, each inserting its independently<br />
derived Authentication-Results header field into passed mail.</p>
<p>To sign as late as possible with a dkim-milter, the signing<br />
milter can be invoked by a Postfix smtpd service which is receiving<br />
content-checked mail from a content filter such as amavisd-new.<br />
As this second-stage smtpd service does not reliably know how a<br />
given message came into a mail system and whether it is supposed<br />
to be signed or not, a clean solution is to provide two (or more)<br />
parallel paths through MTA and through a content filter, one used<br />
for mail that is eligible for being signed (originating mail),<br />
the other for all the rest. This same dual path approach through<br />
amavisd is beneficial for signing by amavisd too, for the same<br />
reason of providing a reliable source of information on mail<br />
origin to a signature choosing code:</p>
<pre>              +------+
              |verify|          (verify)
              +--+---+              | (by amavisd and/or SA)
                ^^^ milter          |
incoming:       |||             +---v-------+
  MX ----&gt;  25 smtpd ---&gt; 10024 &gt;           &gt;---&gt; 10025 smtpd --&gt;
                 ||             |           |
  SASL --&gt;  25 smtpd \          |  amavisd  | (notifications)
submission        |   +-&gt;       |           &gt;---&gt;_
  mynets-&gt;  25 smtpd ---&gt; 10026 &gt;ORIGINATING&gt;---&gt; 10027 smtpd --&gt;
submission            +-&gt;       +-------^---+            |
       --&gt; 587 smtpd /  :               |                v milter
                       (convert         |             +------+
                       to 7-bit)      (sign)          | sign |
                                                      +------+
</pre>
<p>There are other benefits to providing two parallel paths: a content<br />
filter may be configured to apply different rules and settings to mail<br />
that is known to be originating from our users. Some suggestions: apply<br />
less strict banning rules, enable spam administrator notifications for<br />
internally originating spam and viruses, letting SpamAssassin rules be<br />
conditionalized based on amavisd-new policy banks loaded, etc.</p>
<h3><a name="dkim-postfix-dual-path">Configuring multiple mail paths<br />
in Postfix</a></h3>
<p>Here is one way of configuring Postfix for providing two paths<br />
through a content filter. Locally submitted or authenticated mail<br />
will go to a content filter to its port 10026 and will be signed on<br />
its way out (either by amavisd or by a signing milter). All other<br />
mail (incoming) will be diverted to port 10024 for normal content<br />
filtering, and will not be eligible for signing.</p>
<p><i>main.cf:</i></p>
<pre>  # on re-queueing of a message smtpd_*_restrictions do not apply,
  # so we'd better provide a safe default for a content_filter,
  # even at an expense of later flipping the choice twice
  # (which adds a bit to log clutter, but never mind)
  #
  content_filter = amavisfeed:[127.0.0.1]:10024

  # each triggered FILTER deposits its argument into a
  # content_filter setting, the last deposited value applies
  #
  smtpd_sender_restrictions =
    check_sender_access regexp:/etc/postfix/tag_as_originating.re
    permit_mynetworks
    permit_sasl_authenticated
    permit_tls_clientcerts
    check_sender_access regexp:/etc/postfix/tag_as_foreign.re

  # Make sure to assign FILTER tags in restrictions which
  # are only invoked once per message, e.g. client or sender
  # restrictions, but NOT on smtpd_recipient_restrictions,
  # as a message may have multiple recipients, so multiple
  # passes through FILTER tag assignments can yield a
  # surprising (and incorrect) result.
</pre>
<p><i>/etc/postfix/tag_as_originating.re:</i></p>
<pre>  /^/  FILTER amavisfeed:[127.0.0.1]:10026
</pre>
<p><i>/etc/postfix/tag_as_foreign.re:</i></p>
<pre>  /^/  FILTER amavisfeed:[127.0.0.1]:10024
</pre>
<p>In master.cf set up two listening smtpd services for receiving<br />
filtered mail from amavisd (as per README.postfix), one on tcp<br />
port 10025 (for inbound mail) and the other on port 10027 (for<br />
originating mail). If a signing milter is in use it will be<br />
attached to a smtpd service on 10027 only. If no milters are<br />
in use and signing is done by amavisd, both smtpd services can<br />
have exactly the same settings, and in fact only one suffices,<br />
in which case redirecting $forward_method and $notify_method to<br />
&#8217;smtp:[127.0.0.1]:10027&#8242; in later example can be disregarded.</p>
<h3><a name="dkim-amavisd-path">Configuring multiple mail paths<br />
in amavisd</a></h3>
<p>In amavisd.conf two parallel paths need to be provided,<br />
one receiving on port 10024 and forwarding to 10025,<br />
the other receiving on port 10026 and forwarding to 10027.</p>
<pre>  $inet_socket_port = [10024,10026];  # listen on two ports
</pre>
<p>The 10024&gt;10025 path will be controlled by a default policy bank,<br />
the other (10026&gt;10027), dedicated to mail intended to be signed,<br />
will use a policy bank (arbitrarily) named ORIGINATING:</p>
<pre>  $forward_method = 'smtp:[127.0.0.1]:10025';  # MTA with non-signing service
  $notify_method  = 'smtp:[127.0.0.1]:10027';  # MTA with signing service

  # switch policy bank to 'ORIGINATING' for mail received on port 10026:
  $interface_policy{'10026'} = 'ORIGINATING';

  $policy_bank{'ORIGINATING'} = {  # mail originating from our users
    originating =&gt; 1,  # indicates client is ours, allows signing
    #
    # force MTA to convert mail to 7-bit before DKIM signing
    # to avoid later conversions which could destroy signature:
    smtpd_discard_ehlo_keywords =&gt; ['8BITMIME'],
    #
    # forward to a smtpd service providing DKIM signing service
    # (if using a signing milter instead of signing by amavisd):
    forward_method =&gt; 'smtp:[127.0.0.1]:10027',
    #
    # other special treatment of locally originating mail,
    # just some suggestions here:
    spam_admin_maps  =&gt; ["spamalert\@$mydomain"],  # warn of spam from us
    virus_admin_maps =&gt; ["virusalert\@$mydomain"],
    banned_filename_maps =&gt; ['ALT-RULES'],         # more relaxed rules
    spam_quarantine_cutoff_level_maps =&gt; undef,    # quarantine all spam
    spam_dsn_cutoff_level_maps =&gt; undef,
    spam_dsn_cutoff_level_bysender_maps =&gt; # bounce to local senders only
      [ { lc(".$mydomain") =&gt; undef,  '.' =&gt; 15 } ],
  };
</pre>
<p>The <tt>smtpd_discard_ehlo_keywords=&gt;['8BITMIME']</tt> serves<br />
to persuade Postfix to convert mail to 7-bit quoted-printable before<br />
submitting it to content filtering and signing. Avoiding 8-bit characters<br />
in mail body makes signatures less susceptible to breaking by some<br />
relaying or receiving MTA over which we have no control.<br />
The same effect (making Postfix convert outgoing mail to 7-bits<br />
before DKIM signing) could be achieved by a Postfix setting<br />
<tt>smtp_discard_ehlo_keywords=8bitmime</tt> on a smtp service<br />
feeding mail-to-be-signed to amavisd, but this would require setting<br />
up two such services, one with the option and one without.</p>
<p>Note that 8-bit to 7-bit conversion may break a S/MIME or PGP signature,<br />
so if mail signing is in use, it may not be desirable to let Postfix<br />
do the conversion, and it may be acceptable to take a risk that a remote<br />
MTA will clobber signatures if it decides the mail text is to be converted<br />
to 7-bits QP. The only reliable solution in this case is to configure<br />
MUA clients to stick to 7-bit characters/encodings before generating<br />
S/MIME or PGP signatures.</p>
<p>The following text from the Postfix documentation file MILTER_README<br />
<em>should be disregarded</em> &#8212; amavisd <em>is</em> 8-bit clean,<br />
and we do want Postfix to convert to 7-bits on the signing path<br />
but not on the other path:<br />
<span style="text-decoration:line-through;font-style:italic">Content<br />
filters may break domain key etc. signatures. If you use an SMTP-based<br />
content filter, then you should add a line to master.cf with<br />
&#8220;-o disable_mime_output_conversion=yes&#8221;, as described in the<br />
advanced content filter example.</span></p>
<p>While testing how the configured system plays with some mailing lists<br />
(such as <i>postfix-users</i> or SpamAssassin <i>users</i> list), one has<br />
to keep in mind that amavisd-new caches spam checking results of recently<br />
seen message bodies: a mail going out to a mailing list is not yet signed<br />
as it reaches a content filter, but the SpamAssassin verdict is remembered<br />
at that point (claiming the message is not signed). When this message<br />
with unchanged body comes back from a mailing list, this time signed<br />
in the header section by our domain, the signature should prove correct,<br />
yet the cached result from a minute ago still claims the message is not<br />
signed. If this is of concern, one can turn off caching of spam checking<br />
results for ham by setting:  <tt>$spam_check_negative_ttl = 0;</tt></p>
<p>While on the topic of providing multiple paths through amavisd,<br />
when one has to deal with a mailing list manager (e.g. Mailman) in the<br />
same setup, and re-signing of its fan-out mail is desired, it may be<br />
useful to add a third path through amavisd, this one stripped down to<br />
bare bones, providing only DKIM signing and nothing else (no virus or<br />
spam checks, no decoding), as these checks were already done once on<br />
mail before it reached a mailing list manager. Here is one possibility,<br />
accepting mail on port 10028 and sending it to 10025:</p>
<pre>  $inet_socket_port = [10024,10026,10028];

  $interface_policy{'10028'} = 'NOCHECKS';

  $policy_bank{'NOCHECKS'} = {  # no checks, just DKIM signing
    originating =&gt; 1,  # allows signing
    forward_method =&gt; 'smtp:[127.0.0.1]:10025',
    smtpd_greeting_banner =&gt;
      '${helo-name} ${protocol} ${product} NOCHECKS service ready',
    mynetworks_maps =&gt; [],  # avoids loading MYNETS policy unnecessarily
    os_fingerprint_method =&gt; undef,
    penpals_bonus_score =&gt; undef,
    bounce_killer_score =&gt; 0,
    bypass_decode_parts =&gt; 1,
    bypass_header_checks_maps =&gt; [1],
    bypass_virus_checks_maps  =&gt; [1],
    bypass_spam_checks_maps   =&gt; [1],
    bypass_banned_checks_maps =&gt; [1],
    spam_lovers_maps          =&gt; [1],
    banned_files_lovers_maps  =&gt; [1],
    archive_quarantine_to_maps =&gt; [],
    remove_existing_x_scanned_headers =&gt; undef,
    remove_existing_spam_headers =&gt; undef,
    signed_header_fields =&gt; { 'Sender' =&gt; 1 },
  };
</pre>
]]></content:encoded>
			<wfw:commentRss>http://takahisa.info/2010/03/11/setup-dkim-on-postfix-with-amavisd-new/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Mobile htaccess for japan region</title>
		<link>http://takahisa.info/2009/06/10/google-mobile-htaccess-for-japan-region/</link>
		<comments>http://takahisa.info/2009/06/10/google-mobile-htaccess-for-japan-region/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 04:22:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://takahisa.info/?p=230</guid>
		<description><![CDATA[RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^KDDI.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Vodafone.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^SoftBank.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.+DDIPOCKET.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.+WILLCOM.*
RewriteRule ^$ http://www.google.com/gwt/n?u=http://www.example.com [R,L]
]]></description>
			<content:encoded><![CDATA[<p>RewriteEngine on</p>
<p>RewriteCond %{HTTP_USER_AGENT} ^DoCoMo.* [OR]</p>
<p>RewriteCond %{HTTP_USER_AGENT} ^KDDI.* [OR]</p>
<p>RewriteCond %{HTTP_USER_AGENT} ^Vodafone.* [OR]</p>
<p>RewriteCond %{HTTP_USER_AGENT} ^SoftBank.* [OR]</p>
<p>RewriteCond %{HTTP_USER_AGENT} ^J-PHONE.* [OR]</p>
<p>RewriteCond %{HTTP_USER_AGENT} ^Mozilla.+DDIPOCKET.* [OR]</p>
<p>RewriteCond %{HTTP_USER_AGENT} ^Mozilla.+WILLCOM.*</p>
<p>RewriteRule ^$ http://www.google.com/gwt/n?u=http://www.example.com [R,L]</p>
]]></content:encoded>
			<wfw:commentRss>http://takahisa.info/2009/06/10/google-mobile-htaccess-for-japan-region/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8211; become — on wordpress</title>
		<link>http://takahisa.info/2009/03/14/become-on-wordpress/</link>
		<comments>http://takahisa.info/2009/03/14/become-on-wordpress/#comments</comments>
		<pubDate>Sat, 14 Mar 2009 01:02:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://takahisa.info/?p=210</guid>
		<description><![CDATA[&#8211; or &#8212;  become &#8212; on wordpress 2.7
to avoid it. change formatting.php in wp-include folder.
line 47 before:
$static_characters = array_merge(array(&#8216;&#8212;&#8217;, &#8216; &#8212; &#8216;, &#8216;&#8211;&#8217;, &#8216;xn--&#8217;, &#8216;&#8230;&#8217;, &#8216;&#8220;&#8217;, &#8216;\&#8217;s&#8217;, &#8216;\&#8217;\&#8221;, &#8216; &#8482;&#8217;), $cockney);
        $static_replacements = array_merge(array(&#8216;&#8212;&#8217;, &#8216; &#8212; &#8216;, &#8216;&#8212;&#8217;, &#8216;xn--&#8217;, &#8216;&#8230;&#8217;, &#8216;&#8220;&#8217;, &#8216;&#8217;s&#8217;, &#8216;&#8221;&#8217;, &#8216; &#8482;&#8217;), $cockneyreplace);
line 47 [...]]]></description>
			<content:encoded><![CDATA[<p>&#8211; or &#8212;  become &#8212; on wordpress 2.7<br />
to avoid it. change formatting.php in wp-include folder.</p>
<p>line 47 before:<br />
$static_characters = array_merge(array(&#8216;&#8212;&#8217;, &#8216; &#8212; &#8216;, &#8216;&#8211;&#8217;, &#8216;xn--&#8217;, &#8216;&#8230;&#8217;, &#8216;&#8220;&#8217;, &#8216;\&#8217;s&#8217;, &#8216;\&#8217;\&#8221;, &#8216; &#8482;&#8217;), $cockney);<br />
        $static_replacements = array_merge(array(&#8216;&#8212;&#8217;, &#8216; &#8212; &#8216;, &#8216;&#8212;&#8217;, &#8216;xn--&#8217;, &#8216;&#8230;&#8217;, &#8216;&#8220;&#8217;, &#8216;&#8217;s&#8217;, &#8216;&#8221;&#8217;, &#8216; &#8482;&#8217;), $cockneyreplace);</p>
<p>line 47 after:<br />
$static_characters = array_merge(array(&#8216;&#8212;&#8217;, &#8216; &#8212; &#8216;, &#8216;&#8211;&#8217;, &#8216;xn--&#8217;, &#8216;&#8230;&#8217;, &#8216;&#8220;&#8217;, &#8216;\&#8217;s&#8217;, &#8216;\&#8217;\&#8221;, &#8216; &#8482;&#8217;), $cockney);<br />
        $static_replacements = array_merge(array(&#8216;&#8212;&#8217;, &#8216; &#8212; &#8216;, &#8216;&#8211;&#8217;, &#8216;xn--&#8217;, &#8216;&#8230;&#8217;, &#8216;&#8220;&#8217;, &#8216;&#8217;s&#8217;, &#8216;&#8221;&#8217;, &#8216; &#8482;&#8217;), $cockneyreplace);</p>
]]></content:encoded>
			<wfw:commentRss>http://takahisa.info/2009/03/14/become-on-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>output oracle sql query result to file</title>
		<link>http://takahisa.info/2008/09/21/output-oracle-sql-query-result-to-file/</link>
		<comments>http://takahisa.info/2008/09/21/output-oracle-sql-query-result-to-file/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 06:34:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://takahisa.info/?p=81</guid>
		<description><![CDATA[taka@ns2#~&#62;sqlplus
SQL*Plus: Release 10.2.0.3.0 &#8211; Production on Sun Sep 21 16:32:13 2008
 
Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.
Enter user-name: xxxxx
Enter password: 
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 &#8211; 64bit Production
With the Partitioning, OLAP and Data Mining options
 
SQL&#62; spool sql.lst
SQL&#62; select * from academic;
     ACNUM    DEPTNUM FAMNAME             [...]]]></description>
			<content:encoded><![CDATA[<p>taka@ns2#~&gt;sqlplus</p>
<p>SQL*Plus: Release 10.2.0.3.0 &#8211; Production on Sun Sep 21 16:32:13 2008</p>
<p> </p>
<p>Copyright (c) 1982, 2006, Oracle.  All Rights Reserved.</p>
<p>Enter user-name: xxxxx</p>
<p>Enter password: </p>
<p>Connected to:</p>
<p>Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 &#8211; 64bit Production</p>
<p>With the Partitioning, OLAP and Data Mining options</p>
<p> </p>
<p>SQL&gt; spool sql.lst</p>
<p>SQL&gt; select * from academic;</p>
<p>     ACNUM    DEPTNUM FAMNAME              GIVENAME             INITIALS</p>
<p>&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;-</p>
<p>** rows selected.</p>
<p>SQL&gt; spool off</p>
<p> </p>
<p> sql.lst is saved at your home directory.</p>
]]></content:encoded>
			<wfw:commentRss>http://takahisa.info/2008/09/21/output-oracle-sql-query-result-to-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Create MS-DOS Bootdisk. without HIMEM</title>
		<link>http://takahisa.info/2008/08/19/create-ms-dos-bootdisk-without-himem/</link>
		<comments>http://takahisa.info/2008/08/19/create-ms-dos-bootdisk-without-himem/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 05:09:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://takahisa.info/?p=55</guid>
		<description><![CDATA[When we flash bios or do something simple, we still using old MS-DOS.
but how we can create MS-DOS bootable disk with windows xp or vista?
well answer is we can create one from format option of xp or vista. but what if you like to have windows 98 MS-DOS bootable disk.
 
this is how to do.
 
Get image [...]]]></description>
			<content:encoded><![CDATA[<p>When we flash bios or do something simple, we still using old MS-DOS.</p>
<p>but how we can create MS-DOS bootable disk with windows xp or vista?</p>
<p>well answer is we can create one from format option of xp or vista. but what if you like to have windows 98 MS-DOS bootable disk.</p>
<p> </p>
<p>this is how to do.</p>
<p> </p>
<p>Get image form http://www.allbootdisks.com</p>
<p>follow instruction how to do at allbootdisks.com</p>
<p> </p>
<p>few bios update program hate HIMEM support. avoid MS-DOS load HIMEM,</p>
<p>edit config.sys to not load HIMEM.</p>
]]></content:encoded>
			<wfw:commentRss>http://takahisa.info/2008/08/19/create-ms-dos-bootdisk-without-himem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
