Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!



Ask Slashdot: What Tech Products Were Built To Last?

lazarus iPhone 4 Meets Washing Machine (690 comments)

My daughter forgot her iPhone 4 in a pocket while doing laundry (commercial-sized front loader in an apartment building). The door locks when you start these. She panicked when she realized (like all teenagers do when they are without their device for 10 seconds) that she didn't have it and that it was probably in the wash.

No amount of convincing could get that machine to stop or open up, so she sat their crying for the entire wash cycle (I could only imagine what the accelerometer was doing during the spin cycle). When it stopped and unlocked she retrieved the phone and it was fine. Still works today two years later. I suspect the iPhone 4 will go down in history as being a really solid device, although with 10s of millions of them I'm sure there are lots of stories to the contrary.

4 days ago

Ask Slashdot: What Tech Products Were Built To Last?

lazarus Re:HP 15C calculator (690 comments)

Thanks for posting this. I had a 15C which I gave to a friend when I got a 28S. The 28S is still on my desk and still works brilliantly. Both calculators are my favourites. The 28S takes "N" batteries which were for "cameras" when cameras still had film in them. So they are getting a little harder to find. It takes a few years for them to die, but I'm starting to stockpile them anyway.

I'm guessing the button cells for the 15C are a little easier to find.

4 days ago

Scientists Solve the Mystery of Why Zebras Have Stripes

lazarus Re:Important Quote from Article (190 comments)

I am totally trying this with body paint next time I go to the beach.

about three weeks ago

Your Car Will Tell You How To Hit the Next Green Light

lazarus Anger Management Classes to Follow (364 comments)

Except that the massive pickup behind me who is driving 3 inches from my bumper revving his engine and cussing has no idea why I'm driving as slow as I am. I drive a VW clean diesel and my fuel economy (on average over three years) is already over 50mpg from driving like this as often as possible. Trust me, this initiative will go absolutely nowhere until the cars are driving themselves. You can't change human behaviour like you are hoping to. Even when they can see the red light in front of them people MUST get there as quickly as possible so they can stop and wait.

about three weeks ago

Ohio Attempting To Stop Tesla From Selling Cars, Again

lazarus Re:Once again ... (387 comments)

"Once again, companies try to prevent competition through legislation "

Yep. Ever wonder why you don't see more good light-duty trucks in the US? It's because of the Chicken Tax, a law from 1963. I kid you not. And the American consumer is the looser.

What is new about the Tesla situation is that it is an American company getting squeezed, rather than protection from goods from foreign countries.

If I lived in Ohio I would be asking my rep how this is good for me as a consumer and whether he's heard of social media.

about 2 months ago

International Space Station Mission Extended To 2024

lazarus Waldo (104 comments)

Too bad, I was hoping to buy it and become Waldo.

On a more serious note, I don't see the ISS as a single "thing" that can/should be abandoned or destroyed. It is a collaborative effort of many people and many nations and is designed to be built upon and "developed". Like a new community. I'm hoping that we as a species find the right combination of profitability and marketability from it to ensure it is still in the sky long after I'm dead and buried. Perhaps we should start thinking of it as more of a "place" than a "thing".

about 3 months ago

Wikipedia's Lamest Edit Wars

lazarus State of the Modern Society (219 comments)

I can't decide if I should be thrilled that we have achieved some kind of intellectual enlightened society evidenced by our capacity to be pedantic in a globally connected ecosystem of information, or appalled that people don't have better things to do with their time.

Perhaps we should have a discussion about this. On-line.

about 4 months ago

Canada Post Announces the End of Urban Home Delivery

lazarus ePost (226 comments)

Canada Post already has something called ePost, which makes most regular postal mail obsolete now. It sounds to me like they're helping to put traditional postal mail out of business anyway.

I'd like to have no mailbox altogether. The notion that I have a "postal" address (which everybody wants for some reason) that a human being drives a car to so they can fill it with unwanted matter printed on processed dead trees is completely ridiculous. Give me ePost for bills and a local post office for packages and I'm good.

What's your address? Same as yours.

about 4 months ago

Solar Pressure May Help Kepler Return To Planet-Hunting Duties

lazarus Light Sail (46 comments)

This is fascinating, but what I find even more interesting is why they couldn't use a similar technique to make the need for the attitude control wheels obsolete? It would require a spacecraft much different than Kepler, but would it not be possible to use sails to orient a similar craft no matter what area of the sky it wanted to point to?

about 5 months ago

With Burning Teslas In the News Ford Recalls Almost 140,000 Escapes

lazarus Re:Only Ford? (293 comments)

My personal favourite was the recall of 3.4 million airbags last year in Toyota and Nissan vehicles because the ones in the seats may catch fire in the event of an accident:

"In an accident, the airbag for the front passenger seat may not inflate correctly because of a manufacturing defect in the propellant used in the airbag inflator, the companies said. As a result, there is a risk of fires starting or of passengers being injured."

You survive the accident, but then your seat catches on fire...and your door won't open... Just imagine. Good thing the media is informing us all about how dangerous a Tesla is.

about 5 months ago

Female Software Engineers May Be Even Scarcer Than We Thought

lazarus Scary (445 comments)

I read this as "Female Software Engineers may be even Scarier Than we Thought" and I couldn't wait to find out how in the world that was going to be quantified and/or justified.

I love geeks, scary or not.

about 5 months ago

Microsoft Customers Hit With New Wave of Fake Tech Support Calls

lazarus Re:Hallo Windows man (201 comments)

My call went something like this:

Scammer: "Hi Sir. I am calling you on behalf of Microsoft. It has come to our attention that your computer has been infected with viruses and trojans."
Me: "Does your mom know that you scam people for a living?"
Me: "Hello?"

about 5 months ago

Can the iPhone Popularize Fingerprint Readers?

lazarus Wrong Question (356 comments)

"But the technology has thus far failed to become ubiquitous in the consumer realm, and it remains to be seen whether the new iPhone — which is all but guaranteed to sell millions of units — can popularize something that consumers don't seem to want."

This is not how Apple thinks of design. Instead of asking people "Do you want a fingerprint scanner?" the question they ask themselves is "How do we make security easier if not completely transparent to the end user?" If you asked people if they wanted to be secure without having to do anything at all, your answer would be different. The fingerprint scanner just happens to be the right solution to the problem (in Apple's opinion).

about 7 months ago

Apple Unveils iPhone 5C, iPhone 5S

lazarus Re:iPhone fan, but feeling dissappointed (773 comments)

I'm with you. The iPhone is just getting too damn small for my 2000 year-old eyes to see anymore. Make it bigger FFS! Stupid kids...

about 7 months ago

The Cryonics Institute Offers a Chance at Immortality (Video #2)

lazarus The Cryonics Institure (155 comments)

Can we please at least spell check the title? Thanks.

about 8 months ago

Bioengineered Mouse Heart Gets a Beat Using Human Cells

lazarus Sounds Great (38 comments)

Now please start working on a replacement for my liver.

Seriously though, I wonder how long it will be before brain diseases such as Alzheimer's, Pick's disease and the like are considered the most catastrophic things that can happen to you as other body parts become easier to grow and replace.

about 8 months ago

Bill Gates Promotes Vaccine Projects, Swipes At Google

lazarus Re:Lack of Vision (481 comments)

SpaceX has nothing to do with space exploration - the business model is making money with commercial space flight.

I respectfully disagree. Saying the above is like saying that ship building in the 1700s had nothing to do with world exploration. The reasons for building them were pretty much the same - commerce and defence. But doing so leads to a foundation upon which "economical" exploration can be achieved.

That said, I used the term exploration to encompass the pursuit of commerce in an environment that is very much still exploratory, but your point is well taken (and completely valid). I should have said "...dismissing space innovation..." and that would have been more accurate.

Look up some of the speeches Elon has given about re-thinking spaceflight and you may agree that SpaceX is very much exploratory in nature (still). Fascinating stuff.


about 8 months ago

Bill Gates Promotes Vaccine Projects, Swipes At Google

lazarus Re:Space exploration a waste of money (481 comments)

"The Earth is just too small and fragile a basket for the human race to keep all its eggs in."
--Robert A. Heinlein.

I understand what you are saying, but I just don't agree. Despite what Hollywood tells you, when that asteroid is on its way Bruce Willis will not be able to save you. We need options, and the sooner the better. "A footnote of history" will be a meaningless phrase (though apropos) if there is nobody to write or read it.

Although somehow it would be fitting if the only thing to survive were the space robots...

about 8 months ago

Bill Gates Promotes Vaccine Projects, Swipes At Google

lazarus Lack of Vision (481 comments)

"I guess it's fun, because you shoot rockets up in the air," he said. "But it's not an area that I'll be putting money into."

Sounds like he has no more vision now than he did when he was running Microsoft. I am totally in favour of his philanthropic work, and I agree with him that we should solve the difficult people problems first, but dismissing space exploration or the benefits of connectivity for the purposes of educating the third world out of poverty is short sighted.

about 8 months ago



Virus Killer Magnate McAfee Wanted for Murder

lazarus lazarus writes  |  about a year and a half ago

lazarus (2879) writes "John McAfee, who sold his anti-virus company to Intel in 2010 is wanted for murder in Belize. Gizmodo reports that his on-going disputes with builder Gregory Faull and his alleged abuse of psychosis-inducing hallucinogens has made him the prime suspect in Faull's murder. Some high-tech entrepreneurs go on to build electric supercars and spaceships while others move to Belize and attempt to purify bath salts."
Link to Original Source

Duke Nukem Forever Finally Released

lazarus lazarus writes  |  more than 2 years ago

lazarus (2879) writes ""Take-Two Interactive Software Inc., which publishes the game, launched in Europe and Australia on Friday. The game debuts on Tuesday in the U.S., Canada and Mexico for the PlayStation 3, Xbox 360 and PCs.

Despite the long wait, the game launched to tepid reception from critics. The website Metacritic.com, which aggregates reviews, gave the Xbox 360 version a score of 55 out of 100. The game did better on the PC with a "metascore" of 76 out of 100. There is no score currently available for the PS3 version.""

Link to Original Source

lazarus lazarus writes  |  about 7 years ago

lazarus writes "A group of editors having been fired or quit from the prestigious Canadian Medial Association Journal allegedly over questions of censorship and the influence of big drug companies on the magazine have started their own. Open magazine is a not-for-profit peer reviewed medical journal only available on-line which its founders claim is all about open access and editorial independence. CBC has the full story as well as some background on the problems at the CMAJ."



GDSA (Greylisting Domain Sender Analysis)

lazarus lazarus writes  |  about 4 years ago

The following is a variant of greylisting. You can comment on it from your soapbox if you wish but I've been running it for about three years now and it works great. I put it together for my own use and I have no desire to document it, support it, or in any way promote it. I'm posting it here because I'm tiring of hearing people whine about spam. It uses Exim and mysql to get around some of the inherent limitations of greylisting as it was originally defined (specifically the mandatory "delay" in receiving e-mail from a new source and the requirement to roll-up large senders (like google) into an IP range. Everything is automatic and I don't have problems with mail delays.

Let me be clear. I don't care if you like it or not, or use it or not. It's just data if you want it or are interested.

You need Exim compiled with mysql support in it. Get an RPM or whatever your favourite package manager is. Oh, and you need a resolver. I used a local one for speed and use iptables to block any external use of it.

In /etc/exim you need three files:


This is what they look like. First /etc/exim/exim.conf (some of this you don't need -- depends on what you want your mailer to do for you):

# Exim Config

# Host and SQL config
primary_hostname = host.domain.com
hide mysql_servers = localhost/gdsa/root/

# Domain and Host Lists
domainlist local_domains = mysql;SELECT DISTINCT rd_name FROM rd WHERE rd_name='$domain' AND rd_type='local'
domainlist relay_to_domains = mysql;SELECT DISTINCT rd_name FROM rd WHERE rd_name='$domain' AND rd_type='relay'
hostlist relay_from_hosts = mysql;SELECT DISTINCT rh_name from rh WHERE rh_name='$sender_host_address' AND rh_type='relay'

# Misc MX Configs
acl_smtp_rcpt = acl_check_rcpt
never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 30s
smtp_enforce_sync = false
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d
#auth_advertise_hosts =
qualify_domain = domain.com
smtp_accept_max = 75
helo_allow_chars = _

# GDSA Config .include /etc/exim/gdsa-mysql

# ACL Config
begin acl .include /etc/exim/gdsa-acl

                deny message = Restricted characters in address
                                domains = +local_domains
                                local_parts = ^[.] : ^.*[@%!/|]
                deny message = Restricted characters in address
                                domains = !+local_domains
                                local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
                deny message = No sender information
                                senders = :
                accept authenticated = *
                                control = submission
                deny message = Rejected because $sender_host_address is in zen.spamhaus.org blacklist
                                dnslists = zen.spamhaus.org
                accept hosts = +relay_from_hosts
                                control = submission
                defer acl = gdsa_acl
                                message = GDSA Deferred.
                accept domains = +local_domains
                                message = Unknown user
                                verify = recipient
                accept domains = +relay_to_domains
                deny message = Relay not permitted.

# Routers
begin routers

# MySQL loading of all routers
        driver = manualroute
        domains = +relay_to_domains
        route_data = ${lookup mysql{SELECT rd_ip FROM rd WHERE rd_name='$domain' AND rd_type='relay'}{$value}}
        transport = remote_smtp

    driver = dnslookup
    domains = !+local_domains
    transport = remote_smtp
    ignore_target_hosts = :

    driver = redirect
    file = $home/.forward
    directory_transport = address_directory
    file_transport = address_file
    pipe_transport = address_pipe
    reply_transport = address_reply

    driver = accept
    transport = local_delivery
    cannot_route_message = Unknown user

# Transports
begin transports

        driver = smtp

    driver = appendfile
    group = mail
    mode = 0660
    directory = /home/${local_part}/mail/

# Retry Config
begin retry
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h

# Authentication
begin authenticators

      driver = plaintext
      public_name = PLAIN
      server_prompts = :
      server_condition = "${if saslauthd{{$2}{$3}{smtp}} {1}}"
      server_set_id = $2

      driver = plaintext
      public_name = LOGIN
      server_prompts = "Username:: : Password::"
      server_condition = "${if saslauthd{{$1}{$2}{smtp}} {1}}"
      server_set_id = $1

Next is the /etc/exim/gdsa-acl where most of the magic happens. You'll see what I am doing from the comments (in theory):



        # Our process goes as follows:
        # We attempt to get the full host name of the sending host
        # If we fail to get it, we apply a penalty
        # Then we break down the sending host into either a TLD or an IP address
        # We check to see if the sender is existent
        # If there is no sender we add a penalty
        # We do the DSA test
        # If it fails, we add a penalty
        # Then we check to see if a record for this host/sender/receiver exists
        # If it does not, then we add it with the appropriate penalties
        # We then do a GDSA check as always
        # If the delay requirement passes and the hit requirement passes, then the e-mail gets through
        # Otherwise it is deferred

        # Our variables look like the following:
        # Note: Are these persistent? Documentation says acl_m0..acl_m19 are thrown out after connection. May be good idea to use them.
        # acl_m0 = the full DNS-resolved name of the host, or null if lookup failed
        # acl_m1 = the TLD of the host or it's IP address if a DNS lookup failed
        # acl_m2 = the result of the GDSA test on the record
        # acl_m3 = the id of the record that matched (if any)
        # acl_m4 = the record exists in the database already (true, false)
        # acl_m5 = placeholder for the resut of adding a new record
        # acl_m6 = penalty count
        # acl_m7 = sender address domain for testing
        # acl_m8 = sender ip

        # Clear penalty count
        warn set acl_m6 = 0

        # Get the sener ip address (this is for tracking botnets)
        warn set acl_m8 = $sender_host_address

        # Try to get host name
        warn set acl_m0 = $sender_host_name

        # Get the sender address domain
        warn set acl_m7 = ${if def:sender_address_domain {$sender_address_domain}{$sender_helo_name}}

        # If we could not, then we apply a penalty
        warn set acl_m6 = ${eval:$acl_m6 + ${if def:acl_m0 {0}{1}}}

        # Now extract the TLD from the host name (by stripping off the host part) or set it to an IP address if we didn't get one
        # How do we get the domain? The domain we want is the domain part of the sender address if it exists in the host address.
        # So we check to see if the domain portion of the sender address is in the host.
        # If it is, then we set the TLD to the domain part of the sender address
        # If it is not, then we create the domain part by stripping off the host part of the sending host
        # If domain is NOT in host name then return stripped off host, otherwise return the sending address domain portion
        warn set acl_m1 = ${if def:acl_m0 {${if eq{${lookup mysql{SELECT LOCATE('$acl_m7','$acl_m0')}}}{0}{${lookup mysql{SELECT IF((LENGTH('$ac

        # Check to see if we got a sender address and apply a penalty if we didn't
        warn set acl_m6 = ${eval:$acl_m6 + ${if def:sender_address {0}{1}}}

        # Do the DSA (TLD, sender domain match) test
        warn set acl_m6 = ${eval:$acl_m6 + ${if eq{$acl_m1}{$acl_m7}{0}{1}}}

        # Check if the record exists
        warn set acl_m4 = ${lookup mysql{RECORD_EXISTS}{$value}{-1}}

        # If the record does not exist the we add it with the appropriate penalties
        warn set acl_m5 = ${if eq{$acl_m4}{false}{${lookup mysql{RECORD_ADD}}}}

        # At this point either a record exists or we have added it, so we always do a GDSA test.
        # Note that we should NEVER get an 'unknown' here...
        warn set acl_m2 = ${lookup mysql{GDSA_TEST}{$value}{result=unknown}}

        # now extract the record id (or -1)
        set acl_m3 = ${extract{gl_id}{$acl_m2}{$value}{-1}}

        # now set acl_m2 to contain unknown/deferred/accepted
        set acl_m2 = ${extract{result}{$acl_m2}{$value}{unknown}}

        # check if the record is still blocked
                # if above check returned deferred then defer
                condition = ${if eq{$acl_m2}{deferred}{1}}
                # and note it down
                condition = ${lookup mysql{GDSA_DEFER_HIT}{yes}{yes}}

        # use a warn verb to count records that were hit
        warn condition = ${lookup mysql{GDSA_OK_COUNT}}

        # use a warn verb to set a new expire time on automatic records,
        # but only if the mail was not a bounce, otherwise set to now().
        warn !senders = :
                condition = ${lookup mysql{GDSA_OK_NEWTIME}}
        warn senders = :
                condition = ${lookup mysql{GDSA_OK_BOUNCE}}


Elegant? Okay maybe not, but hey, I was scripting in an ACL definition language... Here, finally is the /etc/exim/gdsa-mysql:

# GDSA SQL Definitions

# Greylisting Options

# GDSA SQL Macros

RECORD_EXISTS = SELECT IF (COUNT(*) > 0, 'true', 'false') \
        AS result \
        WHERE gl_host='${quote_mysql:$acl_m1}' AND \
                        gl_sender='${quote_mysql:$sender_address}' AND \

        WHEN now() >= gl_blocked AND gl_retries = gl_blockcount THEN "accepted" ELSE "deferred" END \
        AS result, gl_id \
        WHERE now() gl_expires AND \
                gl_host = '${quote_mysql:$acl_m1}' AND \
                gl_sender = '${quote_mysql:$sender_address}' AND \
                gl_recipient = '${quote_mysql:$local_part@$domain}' \
        ORDER BY result DESC LIMIT 1

        (gl_ip, gl_host, gl_sender, gl_recipient, gl_created, gl_blocked, gl_expires, gl_retries) \
        VALUES ('${quote_mysql:$acl_m8}', \
                '${quote_mysql:$acl_m1}', \
                '${quote_mysql:$sender_address}', \
                '${quote_mysql:$local_part@$domain}', \
                now(), \
                DATE_ADD(now(), INTERVAL ($acl_m6 * GDSA_DELAY) MINUTE), \
                $acl_m6 * GDSA_RETRIES )

                                          SET gl_blockcount=gl_blockcount+1 \
                                          WHERE gl_id = $acl_m3

                                        SET gl_passcount=gl_passcount+1 \
                                        WHERE gl_id = $acl_m3

                                            SET gl_expires = DATE_ADD(now(), INTERVAL GDSA_WHITE_LIFETIME) \
                                            WHERE gl_id = $acl_m3

                                          SET gl_expires = DATE_ADD(now(), INTERVAL GDSA_BOUNCE_LIFETIME) \
                                          WHERE gl_id = $acl_m3

Of course you're going to need the table definitions:

-- MySQL dump 10.11
-- Host: localhost Database: gdsa
-- ------------------------------------------------------

-- Table structure for table `bl`

SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
    `bl_sender` varchar(128) NOT NULL default '',
    `bl_recipient` varchar(128) NOT NULL default ''
SET character_set_client = @saved_cs_client;

-- Table structure for table `gl`

SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
    `gl_id` bigint(20) NOT NULL auto_increment,
    `gl_ip` varchar(128) default NULL,
    `gl_host` varchar(128) default NULL,
    `gl_sender` varchar(128) default NULL,
    `gl_recipient` varchar(128) default NULL,
    `gl_created` datetime NOT NULL default '0000-00-00 00:00:00',
    `gl_blocked` datetime NOT NULL default '0000-00-00 00:00:00',
    `gl_expires` datetime NOT NULL default '9999-12-31 00:00:00',
    `gl_retries` bigint(20) NOT NULL default '0',
    `gl_passcount` bigint(20) NOT NULL default '0',
    `gl_blockcount` bigint(20) NOT NULL default '0',
    PRIMARY KEY (`gl_id`)
SET character_set_client = @saved_cs_client;

-- Table structure for table `rd`

SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
    `rd_name` varchar(128) NOT NULL default '',
    `rd_ip` varchar(128) default NULL,
    `rd_type` enum('local','relay') NOT NULL default 'local'
SET character_set_client = @saved_cs_client;

-- Table structure for table `rh`

SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
    `rh_name` varchar(128) NOT NULL default '',
    `rh_type` enum('relay') NOT NULL default 'relay'
SET character_set_client = @saved_cs_client;

-- Table structure for table `wl`

SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
    `wl_sender` varchar(128) NOT NULL default '',
    `wl_recipient` varchar(128) NOT NULL default ''

That's it (I think). I can't remember if I ever implemented black or white lists in this. There is probably a good way to do that in the context of everything else. I don't seem to need it. If you do make changes or find something that you think could be done better, I'd be happy to hear about it. Large parts of this were probably stolen from other SQL-based Greylisting solutions. It's been so long I can't remember where I got everything.


Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account